12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //boyer-moore?
- module.exports = function bm(buf,search,offset){
- var m = 0, j = 0
- var table = []
- var ret = -1;
- for(var i=offset||0;i<buf.length;++i){
- console.log('i',i)
- table[i] = [[i,0]]
- if(buf[i] === search[0]) {
- for(j = search.length-1;j>0;--j){
- table[i].push([i+j,j])
- console.log('j',j)
- if(buf[i+j] !== search[j]) {
- //i += j
- j = -1
- break
- }
- }
- if(j === 0) {
- ret = i
- break
- }
- }
- }
- console.log(table)
- renderTable(table,buf,search)
- return ret
- }
- var chalk = require('chalk')
- function renderTable(table,buf,search){
- var s = ''
- console.log('-----')
- console.log('search:',search)
- console.log('-----')
- console.log(buf+'')
- table.forEach(function(a){
- if(!a) return;// console.log('')
- a.forEach(function(v){
- if(!v) return;
- var pad = ''
- while(pad.length < v[0]){
- pad += ' '
- }
- if(search[v[1]] === buf[v[0]]) console.log(pad+chalk.green(search[v[1]]))
- else console.log(pad+chalk.red(search[v[1]]))
- })
- })
- console.log('-----')
- }
|