foxts
Version:
Opinionated collection of common TypeScript utils by @SukkaW
2 lines (1 loc) • 566 B
JavaScript
class e extends Map{constructor(e,t){super(),this.wordEnd=e,this.fail=t}}function t(t){let r=new e(!1,void 0);t.forEach(t=>{let l=r;for(let r=0,o=t.length;r<o;r++){let o=t[r];if(l.has(o))l=l.get(o);else{let t=new e(!1,void 0);l.set(o,t),l=t}}l!==r&&(l.wordEnd=!0)});let l=[r];for(;l.length;){let e=l.pop();e.forEach((t,o)=>{let f=e.fail;for(;f&&!f.has(o);)f=f.fail;t.fail=f?f.get(o):r,l.push(t)})}return e=>{let t=r;for(let l=0,o=e.length;l<o;l++){let o=e[l];for(;t&&!t.has(o);)t=t.fail;if((t=t?t.get(o):r).wordEnd)return!0}return!1}}export{t as createAhoCorasick};