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