Skip to main content
Glama
reconstruct.js2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reconstruct = void 0; const types_1 = require("./types"); const write_set_tokens_1 = require("./write-set-tokens"); const reduceStack = (stack) => stack.map(exports.reconstruct).join(''); const createAlternate = (token) => { if ('options' in token) { return token.options.map(reduceStack).join('|'); } else if ('stack' in token) { return reduceStack(token.stack); } else { throw new Error(`options or stack must be Root or Group token`); } }; exports.reconstruct = (token) => { switch (token.type) { case types_1.types.ROOT: return createAlternate(token); case types_1.types.CHAR: { const c = String.fromCharCode(token.value); // Note that the escaping for characters inside classes is handled // in the write-set-tokens module so '-' and ']' are not escaped here return (/[[\\{}$^.|?*+()]/.test(c) ? '\\' : '') + c; } case types_1.types.POSITION: if (token.value === '^' || token.value === '$') { return token.value; } else { return `\\${token.value}`; } case types_1.types.REFERENCE: return `\\${token.value}`; case types_1.types.SET: return write_set_tokens_1.writeSetTokens(token); case types_1.types.GROUP: { // Check token.remember const prefix = token.name ? `?<${token.name}>` : token.remember ? '' : token.followedBy ? '?=' : token.notFollowedBy ? '?!' : '?:'; return `(${prefix}${createAlternate(token)})`; } case types_1.types.REPETITION: { const { min, max } = token; let endWith; if (min === 0 && max === 1) { endWith = '?'; } else if (min === 1 && max === Infinity) { endWith = '+'; } else if (min === 0 && max === Infinity) { endWith = '*'; } else if (max === Infinity) { endWith = `{${min},}`; } else if (min === max) { endWith = `{${min}}`; } else { endWith = `{${min},${max}}`; } return `${exports.reconstruct(token.value)}${endWith}`; } case types_1.types.RANGE: return `${write_set_tokens_1.setChar(token.from)}-${write_set_tokens_1.setChar(token.to)}`; default: throw new Error(`Invalid token type ${token}`); } }; //# sourceMappingURL=reconstruct.js.map

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/krtw00/search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server