@discretetom/r-compose
Version:
Compose RegExp in JavaScript in a readable and maintainable way.
2 lines (1 loc) • 1.29 kB
JavaScript
var rCompose=(()=>{var s=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var u=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var i in r)s(e,i,{get:r[i],enumerable:!0})},l=(e,r,i,g)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of a(r))!u.call(e,n)&&n!==i&&s(e,n,{get:()=>r[n],enumerable:!(g=o(r,n))||g.enumerable});return e};var $=e=>l(s({},"__esModule",{value:!0}),e);var E={};x(E,{composables:()=>p,compose:()=>f});function t(e){return e instanceof RegExp?e.source:e}var p=Object.freeze({escape(e){return e.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")},concat(...e){return e.map(t).filter(r=>r.length).join("")},select(...e){return`(?:${e.map(t).filter(r=>r.length).join("|")})`},group(e){return`(?:${t(e)})`},capture(e,r){return r?.name===void 0?`(${t(e)})`:`(?<${r.name}>${t(e)})`},any(e,r){return r?.greedy??!0?`(?:${t(e)})*`:`(?:${t(e)})*?`},some(e,r){return r?.greedy??!0?`(?:${t(e)})+`:`(?:${t(e)})+?`},optional(e,r){return r?.greedy??!0?`(?:${t(e)})?`:`(?:${t(e)})??`},lookahead(e,r){return r?.negative??!1?`(?!${t(e)})`:`(?=${t(e)})`},lookbehind(e,r){return r?.negative??!1?`(?<!${t(e)})`:`(?<=${t(e)})`},not(e){return`[^${t(e)}]`},raw:String.raw});function f(e,r){return new RegExp(e(p),r)}return $(E);})();
;