UNPKG

@tensorflow/tfjs-layers

Version:

TensorFlow layers API in JavaScript

42 lines 5.44 kB
/** * @license * Copyright 2023 Google LLC. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============================================================================= */ // TODO(mattSoulanille): Replace this with automatic polyfilling using core-js. export function* matchAll(str, regexp) { // Remove the global flag since str.match does not work with it. const flags = regexp.flags.replace(/g/g, ''); regexp = new RegExp(regexp, flags); let match = str.match(regexp); let offset = 0; let restOfStr = str; while (match != null) { if (match.index == null) { console.error(match); throw new Error(`Matched string '${match[0]}' has no index`); } // Remove up to and including the first match from the input string // so the next loop can find the next match. const matchEnd = match.index + match[0].length; restOfStr = restOfStr.slice(matchEnd); // Adjust the match to look like a result from matchAll. match.index += offset; match.input = str; offset += matchEnd; yield match; match = restOfStr.match(regexp); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2hfYWxsX3BvbHlmaWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vdGZqcy1sYXllcnMvc3JjL2xheWVycy9ubHAvbWF0Y2hfYWxsX3BvbHlmaWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILCtFQUErRTtBQUMvRSxNQUFNLFNBQVUsQ0FBQyxDQUFBLFFBQVEsQ0FBQyxHQUFXLEVBQUUsTUFBYztJQUNuRCxnRUFBZ0U7SUFDaEUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFbkMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDcEIsT0FBTyxLQUFLLElBQUksSUFBSSxFQUFFO1FBQ3BCLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDOUQ7UUFFRCxtRUFBbUU7UUFDbkUsNENBQTRDO1FBQzVDLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUMvQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUV0Qyx3REFBd0Q7UUFDeEQsS0FBSyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUM7UUFDdEIsS0FBSyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7UUFFbEIsTUFBTSxJQUFJLFFBQVEsQ0FBQztRQUNuQixNQUFNLEtBQUssQ0FBQztRQUNaLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2pDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAyMDIzIEdvb2dsZSBMTEMuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKi9cblxuLy8gVE9ETyhtYXR0U291bGFuaWxsZSk6IFJlcGxhY2UgdGhpcyB3aXRoIGF1dG9tYXRpYyBwb2x5ZmlsbGluZyB1c2luZyBjb3JlLWpzLlxuZXhwb3J0IGZ1bmN0aW9uICptYXRjaEFsbChzdHI6IHN0cmluZywgcmVnZXhwOiBSZWdFeHApOiBJdGVyYWJsZUl0ZXJhdG9yPFJlZ0V4cE1hdGNoQXJyYXk+IHtcbiAgLy8gUmVtb3ZlIHRoZSBnbG9iYWwgZmxhZyBzaW5jZSBzdHIubWF0Y2ggZG9lcyBub3Qgd29yayB3aXRoIGl0LlxuICBjb25zdCBmbGFncyA9IHJlZ2V4cC5mbGFncy5yZXBsYWNlKC9nL2csICcnKTtcbiAgcmVnZXhwID0gbmV3IFJlZ0V4cChyZWdleHAsIGZsYWdzKTtcblxuICBsZXQgbWF0Y2ggPSBzdHIubWF0Y2gocmVnZXhwKTtcbiAgbGV0IG9mZnNldCA9IDA7XG4gIGxldCByZXN0T2ZTdHIgPSBzdHI7XG4gIHdoaWxlIChtYXRjaCAhPSBudWxsKSB7XG4gICAgaWYgKG1hdGNoLmluZGV4ID09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWF0Y2gpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRjaGVkIHN0cmluZyAnJHttYXRjaFswXX0nIGhhcyBubyBpbmRleGApO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBmaXJzdCBtYXRjaCBmcm9tIHRoZSBpbnB1dCBzdHJpbmdcbiAgICAvLyBzbyB0aGUgbmV4dCBsb29wIGNhbiBmaW5kIHRoZSBuZXh0IG1hdGNoLlxuICAgIGNvbnN0IG1hdGNoRW5kID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XG4gICAgcmVzdE9mU3RyID0gcmVzdE9mU3RyLnNsaWNlKG1hdGNoRW5kKTtcblxuICAgIC8vIEFkanVzdCB0aGUgbWF0Y2ggdG8gbG9vayBsaWtlIGEgcmVzdWx0IGZyb20gbWF0Y2hBbGwuXG4gICAgbWF0Y2guaW5kZXggKz0gb2Zmc2V0O1xuICAgIG1hdGNoLmlucHV0ID0gc3RyO1xuXG4gICAgb2Zmc2V0ICs9IG1hdGNoRW5kO1xuICAgIHlpZWxkIG1hdGNoO1xuICAgIG1hdGNoID0gcmVzdE9mU3RyLm1hdGNoKHJlZ2V4cCk7XG4gIH1cbn1cbiJdfQ==