UNPKG

re2

Version:

Bindings for RE2: fast, safe alternative to backtracking regular expression engines.

40 lines (33 loc) 855 B
'use strict'; const RE2 = require('./build/Release/re2.node'); // const RE2 = require('./build/Debug/re2.node'); const setAliases = (object, dict) => { for (let [name, alias] of Object.entries(dict)) { Object.defineProperty( object, alias, Object.getOwnPropertyDescriptor(object, name) ); } }; setAliases(RE2.prototype, { match: Symbol.match, search: Symbol.search, replace: Symbol.replace, split: Symbol.split }); RE2.prototype[Symbol.matchAll] = function* (str) { if (!this.global) throw TypeError( 'String.prototype.matchAll() is called with a non-global RE2 argument' ); const re = new RE2(this); re.lastIndex = this.lastIndex; for (;;) { const result = re.exec(str); if (!result) break; if (result[0] === '') ++re.lastIndex; yield result; } }; module.exports = RE2;