// ToolGood.Words.StringSearch.js // 2020, Lin Zhijun, https://github.com/toolgood/ToolGood.Words // Licensed under the Apache License 2.0 function StringSearch(){function q(){this.Layer=this.Index=0;this.End=!1;this.Char="";this.Results=[];this.m_values={};this.Parent=this.Failure=null;this.Add=function(c){if(null!=this.m_values[c])return this.m_values[c];var a=new q;a.Parent=this;a.Char=c;return this.m_values[c]=a};this.SetResults=function(c){0==this.End&&(this.End=!0);this.Results.push(c)}}function r(){this.End=!1;this.Results=[];this.m_values={};this.minflag=65535;this.maxflag=0;this.Add=function(c,a){this.minflag>c&&(this.minflag=c);this.maxflag=c?this.m_values[c]:null}}var k=[],n=[];this.SetKeywords=function(c){n=c;c=new q;for(var a={},d=0;dm;m++)l.push(null);for(var p in h[0].m_values)0!=h[0].m_values.hasOwnProperty(p)&&(l[p]=h[0].m_values[p]);k=l};this.FindFirst=function(c){for(var a=null,d=0;d