CoolFace
Apppublic

strong-tie/inbound-calls

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
write-set-tokens.js108 linesDownload Raw Back to dist
1"use strict";2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {3    if (k2 === undefined) k2 = k;4    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });5}) : (function(o, m, k, k2) {6    if (k2 === undefined) k2 = k;7    o[k2] = m[k];8}));9var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {10    Object.defineProperty(o, "default", { enumerable: true, value: v });11}) : function(o, v) {12    o["default"] = v;13});14var __importStar = (this && this.__importStar) || function (mod) {15    if (mod && mod.__esModule) return mod;16    var result = {};17    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);18    __setModuleDefault(result, mod);19    return result;20};21Object.defineProperty(exports, "__esModule", { value: true });22exports.writeSetTokens = exports.setChar = void 0;23const types_1 = require("./types");24const sets = __importStar(require("./sets-lookup"));25/**26 * Takes character code and returns character to be displayed in a set27 * @param {number} charCode Character code of set element28 * @returns {string} The string for the sets character29 */30function setChar(charCode) {31    return charCode === 94 ? '\\^' :32        charCode === 92 ? '\\\\' :33            charCode === 93 ? '\\]' :34                charCode === 45 ? '\\-' :35                    String.fromCharCode(charCode);36}37exports.setChar = setChar;38/**39 * Test if a character set matches a 'set-lookup'40 * @param {SetTokens} set The set to be tested41 * @param {SetLookup} param The predefined 'set-lookup' & the number of elements in the lookup42 * @returns {boolean} True if the character set corresponds to the 'set-lookup'43 */44function isSameSet(set, { lookup, len }) {45    // If the set and the lookup are not of the same length46    // then we immediately know that the lookup will be false47    if (len !== set.length) {48        return false;49    }50    const map = lookup();51    for (const elem of set) {52        if (elem.type === types_1.types.SET) {53            return false;54        }55        const key = elem.type === types_1.types.CHAR ? elem.value : `${elem.from}-${elem.to}`;56        if (map[key]) {57            map[key] = false;58        }59        else {60            return false;61        }62    }63    return true;64}65/**66 * Writes the tokens for a set67 * @param {Set} set The set to display68 * @param {boolean} isNested Whether the token is nested inside another set token69 * @returns {string} The tokens for the set70 */71function writeSetTokens(set, isNested = false) {72    if (isSameSet(set.set, sets.INTS)) {73        return set.not ? '\\D' : '\\d';74    }75    if (isSameSet(set.set, sets.WORDS)) {76        return set.not ? '\\W' : '\\w';77    }78    // Notanychar is only relevant when not nested inside another set token79    if (set.not && isSameSet(set.set, sets.NOTANYCHAR)) {80        return '.';81    }82    if (isSameSet(set.set, sets.WHITESPACE)) {83        return set.not ? '\\S' : '\\s';84    }85    let tokenString = '';86    for (let i = 0; i < set.set.length; i++) {87        const subset = set.set[i];88        tokenString += writeSetToken(subset);89    }90    const contents = `${set.not ? '^' : ''}${tokenString}`;91    return isNested ? contents : `[${contents}]`;92}93exports.writeSetTokens = writeSetTokens;94/**95 * Writes a token within a set96 * @param {Range | Char | Set} set The set token to display97 * @returns {string} The token as a string98 */99function writeSetToken(set) {100    if (set.type === types_1.types.CHAR) {101        return setChar(set.value);102    }103    else if (set.type === types_1.types.RANGE) {104        return `${setChar(set.from)}-${setChar(set.to)}`;105    }106    return writeSetTokens(set, true);107}108//# sourceMappingURL=write-set-tokens.js.map