/**
* Matchy
* Exact and fuzzy string searching algorithms for PHP, JavaScript, Python
*
* @version: 4.0.0
* https://github.com/foo123/Matchy
*
**/
!function(r,t,e){"use strict";"object"==typeof module&&module.exports?(module.$deps=module.$deps||{})&&(module.exports=module.$deps[t]=e.call(r)):"function"==typeof define&&define.amd&&"function"==typeof require&&"function"==typeof require.specified&&require.specified(t)?define(t,["module"],function(t){return e.moduleUri=t.uri,e.call(r)}):t in r||(r[t]=e.call(r)||1)&&"function"==typeof define&&define.amd&&define(function(){return r[t]})}("undefined"!=typeof self?self:this,"Matchy",function(t){"use strict";function r(){}function u(t,r,e){return e?null:-1}function i(t,r){if(!(this instanceof i))return new i(t,r);this.type=r="+"===(r="*"===(r="?"===(r=null==r?"l":r)?{min:0,max:1}:r)?{min:0,max:e}:r)?{min:1,max:e}:r,this.input=I(r)&&M(r,"total_errors")?i.makeFuzzy(t,r.total_errors,!!r.word_level,!!r.transpositions):t}r.VERSION="4.0.0",r.prototype={constructor:r,fsa:function(o,t,r,e){for(var l=o.length,n={},u=0;u<l;++u)n[o.charAt(u)]=1;function i(t,r,e){var n=t.length;if((r=null==r?0:r)<0&&(r+=n),0<n&&0<l&&r+l<=n)for(var u,i=0,c=r;c<n;++c)if(u=t.charAt(c),i=a(i,u),l===i)return e?o:c-l+1;return e?null:-1}var c=function(t,r,e){t=o.slice(0,t);return t===(o.slice(0,r)+e).slice(-t.length)},f=h(0,l+1,0).map(function(){return{}}),a=function(t,r){if(!M(n,r)||1!==n[r])return 0;if(!M(f[t],r)){for(var e=S(l,t+1);0<e&&!c(e,t,r);)--e;f[t][r]=e}return f[t][r]};return null==t?i:i(t,r,e)},rabinkarp:function(h,t,r,e){function n(t,r,e){var n=t.length;if((r=null==r?0:r)<0&&(r+=n),0<n&&0<s&&r+s<=n){for(var u,i,c,o,l={},f=0,a=0;a<s;++a)M(l,o=h.charAt(a))||(l[o]=f++);for(a=r;a<n;++a)M(l,o=t.charAt(a))||(l[o]=f++);for(u=1,i=l[h.charAt(0)]%p,c=l[t.charAt(r)]%p,a=1;a<s;++a)u=u*f%p,i=(i*f+l[h.charAt(a)])%p,c=(c*f+l[t.charAt(r+a)])%p;for(n-=s,a=r;a<=n;++a){if(i===c&&t.slice(a,a+s)===h)return e?h:a;a<n&&(c=(f*(c-u*l[t.charAt(a)])+l[t.charAt(a+s)])%p)<0&&(c+=p)}}return e?null:-1}var s=h.length,p=3989;return null==t?n:n(t,r,e)},knuthmorrispratt:function(c,t,r,e){var n,u,i,o=c.length,l=h(0,o,0);for(l[0]=-1,u=1,n=0;u<o;){if((i=c.charAt(u))===c.charAt(n))l[u]=l[n];else for(l[u]=n;0<=n&&i!==c.charAt(n);)n=l[n];++u,++n}function f(t,r,e){var n=t.length;if((r=null==r?0:r)<0&&(r+=n),0<n&&0<o&&r+o<=n)for(var u=0,i=r;i<n;)if(c.charAt(u)===t.charAt(i)){if(++i,++u===o)return e?c:i-u}else(u=l[u])<0&&(++i,++u);return e?null:-1}return null==t?f:f(t,r,e)},boyermoore:function(c,t,r,e){var o=c.length,n=h(0,o+1,0),l=h(0,o+1,0),u=o,i=o+1;for(n[u]=i;0<u;){for(;i<=o&&c.charAt(u-1)!==c.charAt(i-1);)0===l[i]&&(l[i]=i-u),i=n[i];--i,n[--u]=i}for(i=n[0],u=0;u<o;++u)0===l[u]&&u===(l[u]=i)&&(i=n[i]);function f(t,r,e){var n=t.length;if((r=null==r?0:r)<0&&(r+=n),0<n&&0<o&&r+o<=n)for(var u,i=r;i+o<=n;){for(u=o-1;0<=u&&c.charAt(u)===t.charAt(i+u);)--u;if(u<0)return e?c:i;i+=E.max(1,l[u+1])}return e?null:-1}return null==t?f:f(t,r,e)},twoway:function(f,t,r,e){function n(t,r,e){for(var n,u,i=1,c=1,o=1,l=0;o+c<=r;)u=t.charAt(o+c-1),(u=e*((n=t.charAt(l+c-1))<u?1:u<n?-1:0))<0?(o+=c,c=1,i=o-l):0<u?(o=(l=o)+1,i=c=1):c===i?(o+=i,c=1):++c;return[l,i]}function u(t,r,e){var n=t.length;if((r=null==r?0:r)<0&&(r+=n),0<n&&0<h&&r+h<=n){var u,i,c,o,l=r;if(p)for(c=0;l+h<=n;){for(u=m(a,c)+1;u<=h&&f.charAt(u-1)===t.charAt(l+u-1);)++u;if(u<=h)l+=m(u-a,c-s+1),c=0;else{for(i=a;c<i&&f.charAt(i-1)===t.charAt(l+i-1);)--i;if(i<=c)return e?f:l;l+=s,c=h-s}}else for(o=m(a,h-a)+1;l+h<=n;){for(u=a+1;u<=h&&f.charAt(u-1)===t.charAt(l+u-1);)++u;if(u<=h)l+=u-a;else{for(i=a;0<i&&f.charAt(i-1)===t.charAt(l+i-1);)--i;if(0===i)return e?f:l;l+=o}}}return e?null:-1}var a,h=f.length,i=n(f,h,1),c=n(f,h,-1),s=(i[0]>=c[0]?(a=i[0],i):(a=c[0],c))[1],p=2*a<h&&f.slice(0,a)===f.slice(a,a+s).slice(-a);return null==t?u:u(t,r,e)},commentzwalter:function(t,r,e,n){return null==r?u:n?null:-1},baezayatesgonnet:function(t,r,e,n){return null==r?u:n?null:-1},ahocorasick:function(t,r,e,n){return null==r?u:n?null:-1}},i.makeFuzzy=function(t,r,e,n){var u;return e?t instanceof i&&(I(t.type)&&(M(t.type,"errors")||M(t.type,"total_errors"))||(","===t.type?t=new i(i.makeFuzzy(t.input,r,e,n),n?",,,":",,"):o(t.input)?t.input=t.input.map(function(t){return i.makeFuzzy(t,r,e,n)}):t.input instanceof i&&(t.input=i.makeFuzzy(t.input,r,e,n)))):t instanceof i?I(t.type)&&(M(t.type,"errors")||M(t.type,"total_errors"))||("l"===t.type?t=new i(t.input,{errors:r,transpositions:!!n}):o(t.input)?t.input=t.input.map(function(t){return i.makeFuzzy(t,r,e,n)}):t.input instanceof i&&(t.input=i.makeFuzzy(t.input,r,e,n))):(u=t,"[object String]"===c.call(u)&&(t=new i(t,{errors:r,transpositions:!!n}))),t},i.prototype={constructor:i,input:null,type:null,q0:function(){var t,r,e=this.type,n=this.input;if(I(e)&&(r=M(e,"min")?[n.q0(),0]:M(e,"errors")?(t=S(e.errors,n.length),e.transpositions?[l(0,t,1),l(0,t,1),[],[],""]:[l(0,t,1),l(0,t,1)]):n.q0()),"l"===e&&(r=0),"c"===e&&(r=0),"d"===e&&(r=0),"^"===e&&(r=!1),"$"===e&&(r=!1),"!"===e&&(r=n.q0()),"|"===e&&(r=n.map(function(t){return t.q0()})),","===e&&(r=[[n[0].q0(),0,0]]),",,"===e||",,,"===e){r=[];for(var u=0,i=n.length;u<i;++u)r.push([n[u].q0(),0,u,0,0,u,0])}return{q:r,e:0}},d:function(t,a){var e,r,h=this.type,s=this.input,p=t.q,n=t.e;if(I(h))if(M(h,"min")){var u=p[0].e;t=s.d(p[0],a),p=[t,p[1]],n+=p[0].e-u,s.accept(t)&&(p=[s.q0(),p[1]+1])}else if(M(h,"errors")){if(!N(a)){var i,c,o,l,f,m,d,g=!!h.transpositions,y=s,v=s.length,A=S(h.errors,v),j=A+1,q=p[0],_=p[1],w=null,z=null,x=[],b=[],k=q.length,F=0,O=-1,$=0;for(g&&(w=p[2],z=p[3],d=p[4],F=w.length,l=0),0<k&&0===q[0]&&_[0]<A&&($=f=_[O=c=0]+1,x.push(c),b.push(f),j=E.min(j,f)),o=0;o<k&&(c=q[o],!(v<=c));++o){if(m=y.charAt(c)===a?0:1,f=_[o]+m,i=o+1<k?q[o+1]:-1,++c-1===O&&(f=S(f,$+1)),c===i&&(f=S(f,_[o+1]+1)),g&&d===y.charAt(c-1)&&a===y.charAt(c-2)){for(;l<F&&w[l]<c-2;)++l;l<F&&c-2===w[l]&&(f=S(f,z[l]+m),++l)}f<=A&&(j=E.min(j,f),O=c,$=f,x.push(c),b.push(f))}p=g?[x,b,q,_,a]:[x,b],n=j}}else p=s.d(p,a),n=p.e;return"l"===h&&(p=N(a)?0===p?.1:p:(p=E.floor(p))<s.length&&a===s.charAt(p)?p+1:0),"c"===h&&(p=N(a)?0===p?.1:p:-1<s.indexOf(a)?1:0),"d"===h&&(p=N(a)?0===p?.1:p:-1<"0123456789".indexOf(a)?1:0),"^"===h&&(p=N(a)&&0===a),"$"===h&&(p=N(a)&&1===a),"!"===h&&(p=s.d(p,a),n=p.e),"|"===h&&(u=n,n=1/0,(p=s.map(function(t,r){return t.d(p[r],a)})).forEach(function(t,r){s[r].accept(t)&&(n=E.min(n,t.e))}),isFinite(n)||(n=u+1)),","===h&&(v=s.length,r=p,p=[],r.forEach(function(t){var r,e=t[1],n=t[2],u=t[0].e;s[e].accept(t[0])?e+1<v?(r=s[e].d(t[0],a),s[e].reject(r)||p.push(t=[r,e,n]),r=s[e+1].d(s[e+1].q0(),a),s[e+1].reject(r)||p.push(t=[r,e+1,n+u])):p.push(t):(t=[s[e].d(t[0],a),e,n],p.push(t))}),e=-1,p.forEach(function(t){var r=t[1];e<r?(e=r,n=t[0].e+t[2]):r===e&&(n=E.min(n,t[0].e+t[2]))})),",,"!==h&&",,,"!==h||(v=s.length,r=p,p=[],r.forEach(function(t){var r,e,n,u=t[1],i=t[2],c=t[3],o=t[4],l=t[5],f=t[6];if(s[i].accept(t[0]))if(u+1<v&&i+1<v){if(e=s[i].d(t[0],a),s[i].reject(e)||p.push(t=[e,u,i,c,o,l,f]),!f){for(n=1;i+n<v;++n)r=s[i+n].q0(),e=s[i+n].d(r,a),s[i+n].reject(e)?(p.push(t=[r,u+1,i+n,1,o,l,0]),p.push(t=[r,u+1,i+n,c,1,l,0]),p.push(t=[r,u+1,i+n,c,o,l+n,0])):1===n?p.push(t=[e,u+1,i+n,c,o,l,0]):(p.push(t=[e,u+1,i+n,1,o,l,0]),p.push(t=[e,u+1,i+n,c,1,l,0]),p.push(t=[e,u+1,i+n,c,o,l+n-1,0]));",,,"===h&&0<i&&u+1===i&&(r=s[i-1].q0(),e=s[i-1].d(r,a),s[i-1].reject(e)||p.push(t=[e,u+1,i-1,c,o,l,1]))}}else p.push(t),f||",,,"===h&&0<i&&u+1===i&&(r=s[i-1].q0(),e=s[i-1].d(r,a),s[i-1].reject(e)||p.push(t=[e,u+1,i-1,c,o,l,1]));else if(e=s[i].d(t[0],a),s[i].reject(e)){if(!f)for(n=0;i+n<v;++n)r=s[i+n].q0(),e=s[i+n].d(r,a),s[i+n].reject(e)?(p.push(t=[r,u,i+n,c,o,l+n+1,0]),p.push(t=[r,u,i+n,1,o,l,0]),p.push(t=[r,u,i+n,c,1,l,0])):(p.push(t=[e,u,i+n,1,o,l+n,0]),p.push(t=[e,u,i+n,c,1,l+n,0]))}else p.push(t=[e,u,i,c,o,l,f])}),u=n,n=1/0,p.forEach(function(t){E.max(t[1],t[2])+1===v&&s[t[2]].accept(t[0])&&(n=E.min(n,t[3]+t[4]+t[5]+t[6]))}),isFinite(n))||(n=u+1),{q:p,e:n}},accept:function(t){var r,e=this.type,n=this.input,u=t.q;t.e;return I(e)?M(e,"min")?e.min<=u[1]&&u[1]<=e.max:M(e,"errors")?0<u[0].length&&u[0][u[0].length-1]===n.length:n.accept_with_errors(u,e.total_errors):"l"===e?E.floor(u)===n.length:"c"===e||"d"===e?1===E.floor(u):"^"===e||"$"===e?u:"!"===e?n.reject(u):"|"===e?0<n.filter(function(t,r){return t.accept(u[r])}).length:","===e?(r=n.length,0<u.filter(function(t){return t[1]+1===r&&n[t[1]].accept(t[0])}).length):",,"===e||",,,"===e?(r=n.length,0<u.filter(function(t){return n[t[2]].accept(t[0])}).length):void 0},reject:function(t){var r=this.type,e=this.input,n=t.q;t.e;return I(r)?M(r,"min")?n[1]>=r.max&&e.accept(n[0])||n[1]<r.min&&e.reject(n[0]):M(r,"errors")?!n[0].length:e.reject_with_errors(n,r.total_errors):"l"===r||"c"===r||"d"===r?0===n:"^"===r||"$"===r?!n:"!"===r?e.accept(n):"|"===r?e.length===e.filter(function(t,r){return t.reject(n[r])}).length:","===r?n.length===n.filter(function(t){return e[t[1]].reject(t[0])}).length:",,"===r||",,,"===r?n.length===n.filter(function(t){return e[t[2]].reject(t[0])}).length:void 0},accept_with_errors:function(t,r){var e,n,u,i;return!!this.accept(t)&&(null==r||(e=this.type,n=this.input,u=t.q,t=t.e,I(e)||","!==e.charAt(0)?t<=r:","===e?(i=n.length,0<u.filter(function(t){return t[1]+1===i&&t[0].e+t[2]<=r&&n[t[1]].accept(t[0])}).length):",,"===e||",,,"===e?(i=n.length,0<u.filter(function(t){return E.max(t[1],t[2])+1===i&&t[3]+t[4]+t[5]+t[6]<=r&&n[t[2]].accept(t[0])}).length):void 0))},reject_with_errors:function(t,r){var e,n=this.type,u=this.input;return",,"!==n&&",,,"!==n&&(!!this.reject(t)||null!=r&&(e=t.q,t=t.e,I(n)||","!==n.charAt(0)?r<t:","===n?e.length===e.filter(function(t){return t[0].e+t[2]>r||u[t[1]].reject(t[0])}).length:void 0))},get_errors:function(t){return t.e},match_with_errors:function(t,r,e,n){var u,i=this,c=r||0,o=c,l=t.length,f="",a=0;for(null==n&&(n=i.q0());;){if(l<=o){if(l<++c)break;o=c,n=i.q0(),f=t.charAt(o-1)}if(u=f,f=t.charAt(o),0!==o&&"\n"!==u||(n=i.d(n,0)),n=i.d(n,f),l-1!==o&&"\n"!==f||(n=i.d(n,1)),i.accept(n))return a=i.get_errors(n),{match:e?t.slice(c,o+1):c,errors:a};i.reject(n)?(a=E.max(a,i.get_errors(n)),o=l):++o}return{match:e?null:-1,errors:a=E.max(a,i.get_errors(n))}},match:function(t,r,e,n,u){t=this.match_with_errors(t,r,e,u);return n?t:t.match}},r.NFA=i;var E=Math,S=E.min,m=E.max,e=1/0,n=Object.prototype.hasOwnProperty,c=Object.prototype.toString;function M(t,r){return n.call(t,r)}function N(t){return"number"==typeof t}function o(t){return"[object Array]"===c.call(t)}function I(t){return"[object Object]"===c.call(t)}function h(t,r,e){for(var n=new Array(r),u=0,i=t;u<r;++i,++u)n[i]=e;return n}function l(t,r,e){null==e&&(e=1);for(var n=[];t<=r;)n.push(t),t+=e;return n}return r});
|