1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| //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('-----')
| }
|
|