Blame view

node_modules/buffer-indexof/bm.js 1.1 KB
aaac7fed   liuqimichale   add
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('-----')
  }