'use strict'; const RE2 = require('./build/Release/re2.node'); if (typeof Symbol != 'undefined') { Symbol.match && (RE2.prototype[Symbol.match] = function (str) { return this.match(str); }); Symbol.search && (RE2.prototype[Symbol.search] = function (str) { return this.search(str); }); Symbol.replace && (RE2.prototype[Symbol.replace] = function (str, repl) { return this.replace(str, repl); }); Symbol.split && (RE2.prototype[Symbol.split] = function (str, limit) { return this.split(str, limit); }); Symbol.matchAll && (RE2.prototype[Symbol.matchAll] = function* (str) { if (!this.global) { throw TypeError('String.prototype.matchAll 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;