foxts
Version:
Opinionated collection of common TypeScript utils by @SukkaW
2 lines (1 loc) • 856 B
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./noop.js");const t=new Set([".","?","*","+","^","$","|","(",")","{","}","[","]","\\"]);function n(e,r=!1){let o={},l=(e,t)=>{let n,r=o;for(let o=0,l=e.length;o<l;++o)(n=e.charAt(o))in r||(r[n]=t?{"":""}:{}),r=r[n];r[""]=""};for(let t=0,n=e.length;t<n;++t)l(e[t],r);let i=()=>(function e(n){let r,o,l=!1,i=!1,u=[],s=[];for(let r in n){if(!r){l=!0;continue}((o=e(n[r]))?u:s).push(("-"===r?"\\x2d":t.has(r)?"\\"+r:r)+o)}return l&&null==o?"":(i=!u.length,s.length&&u.push(s[1]?"["+s.join("")+"]":s[0]),r=u[1]?"(?:"+u.join("|")+")":u[0],l&&(r=i?r+"?":"(?:"+r+")?"),r||"")})(o);return{tree:o,add:l,toString:i,toRe:()=>new RegExp((r?"^":"")+i())}}exports.createRetrieKeywordFilter=function(t,r=!1){if(0===t.length)return e.falseFn;let o=n(t,r).toRe();return o.test.bind(o)},exports.retrie=n;