@string-searching/specification
Version:
String searching specification for JavaScript
3 lines (2 loc) • 3.9 kB
JavaScript
var t=function(t,a,e){this.si=t,this.p=a,this.pi=e};function a(t,a){(null==a||a>t.length)&&(a=t.length);for(var e=0,r=new Array(a);e<a;e++)r[e]=t[e];return r}function e(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return a(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?a(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r=regeneratorRuntime.mark(n);function n(a,n){var i,s,o,p,c,h,b;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:i=a.s.slice(a.i,a.j),s=e(n);case 2:if((o=s()).done){r.next=19;break}c=(p=o.value).s.slice(p.i,p.j),h=0;case 6:if(-1!==(b=i.indexOf(c,h))){r.next=10;break}return r.abrupt("break",17);case 10:return r.next=12,new t(a.i+b,p,p.i);case 12:if(!(h>=i.length)){r.next=14;break}return r.abrupt("break",17);case 14:h=b+1,r.next=6;break;case 17:r.next=2;break;case 19:case"end":return r.stop()}},r)}var i=function(t,a,r,n,i){for(var s,o=a.name,p=0,c=e(a(r,0,r.length,n,0,n.length));!(s=c()).done;){var h=s.value;p<i.length?(t.is(h,i[p],o+" > begin of '"+n+"' in '"+r+"'"),++p):(++p,t.fail('"'+o+" > ("+h+") callback called "+p+" times for '"+n+"' in '"+r+"'"))}t.is(p,i.length,o+" > check number of hits for '"+n+"' in '"+r+"'")};i.title=function(t,a,e,r,n){return null!=t?t:a.name+"('"+e+"', '"+r+"') hits "+JSON.stringify(n)},exports.Hit=t,exports.StringSlice=function(t,a,e){this.s=t,this.i=a,this.j=e},exports.data=[{string:"",patterns:[{pattern:"",hits:[0]},{pattern:"abcd",hits:[]}]},{string:"abcd",patterns:[{pattern:"",hits:[0,1,2,3,4]},{pattern:"a",hits:[0]},{pattern:"b",hits:[1]},{pattern:"c",hits:[2]},{pattern:"d",hits:[3]},{pattern:"abcde",hits:[]},{pattern:"abcd",hits:[0]},{pattern:"ab",hits:[0]},{pattern:"bc",hits:[1]},{pattern:"cd",hits:[2]},{pattern:"abc",hits:[0]},{pattern:"bcd",hits:[1]},{pattern:"dcba",hits:[]},{pattern:"xyz",hits:[]}]},{string:"abcdbdbc",patterns:[{pattern:"bc",hits:[1,6]}]},{string:"abcdbdbcazertyuiopqsdfghjklmwxcvbn",patterns:[{pattern:"bc",hits:[1,6]}]},{string:"Some books are to be tasted, others to be swallowed, and some few to be chewed and digested.",patterns:[{pattern:"to",hits:[15,36,66]}]},{string:"aaaaaaaaab",patterns:[{pattern:"aaaab",hits:[5]}]},{string:"aaaaaaaaaab",patterns:[{pattern:"aaa",hits:[0,1,2,3,4,5,6,7]}]},{string:"tototo",patterns:[{pattern:"to",hits:[0,2,4]}]},{string:"aaaa",patterns:[{pattern:"a",hits:[0,1,2,3]},{pattern:"aa",hits:[0,1,2]},{pattern:"aaa",hits:[0,1]},{pattern:"aaaa",hits:[0]}]},{string:"aaaaa",patterns:[{pattern:"aa",hits:[0,1,2,3]}]},{string:"xyyzxxyxzzzxyxyxxyzxyzxzxyxyzz",patterns:[{pattern:"xyz",hits:[16,19,26]},{pattern:"zz",hits:[8,9,28]},{pattern:"xyx",hits:[5,11,13,24]}]},{string:"ABC ABCDAB ABCDABCDABDE",patterns:[{pattern:"ABCDABD",hits:[15]}]},{string:"ABCABCDABABCDABCDABDE",patterns:[{pattern:"ABCDABD",hits:[13]},{pattern:"ABCDAB",hits:[3,9,13]},{pattern:"ABCABC",hits:[0]},{pattern:"ABC",hits:[0,3,9,13]},{pattern:"ABD",hits:[17]}]},{string:"babcbabcabcaabcabcabcacabc",patterns:[{pattern:"abcabcacab",hits:[15]}]}],exports.mock=n,exports.single=function(t){for(var a,r=t.test,n=t.data,s=t.skipEmptyString,o=t.skipEmptyPattern,p=e(t.algorithms);!(a=p()).done;)for(var c,h=a.value,b=e(n);!(c=b()).done;){var l=c.value,u=l.string;if(""!==u||!s)for(var d,f=e(l.patterns);!(d=f()).done;){var g=d.value,x=g.pattern;""===x&&o||r(i,h,u,x,g.hits)}}};
//# sourceMappingURL=index.cjs.map