You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							58 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							58 lines
						
					
					
						
							1.1 KiB
						
					
					
				//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('-----') | 
						|
}
 | 
						|
 |