The point of this last variant is that data gets escaped but RegExp objects do not -- allowing you to compose RegExps: re`${re1}|${re2}*|${data}` But this requires one more adjustment:
> > function re(first, ...args) { > let flags = first; > function tag(template, ...subs) { > const parts = []; > const numSubs = subs.length; > for (let i = 0; i < numSubs; i++) { > parts.push(template.raw[i]); > const subst = subs[i] instanceof RegExp ? `(?:${subs[i].source})` : > subs[i].replace(/[\/\\^$*+?.()|[\]{}]/g, '\\amp;'); > parts.push(subst); > } > parts.push(template.raw[numSubs]); > return RegExp(parts.join(''), flags); > } > if (typeof first === 'string') { > return tag; > } else { > flags = void 0; // Should this be '' ? > return tag(first, ...args); > } > }
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss