Skip to main content
Glama
Parser.jsโ€ข2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Parser = void 0; const Scanner_1 = require("./Scanner"); const RowParser_1 = require("./RowParser"); const Token_1 = require("./Token"); class Parser { constructor(parserOptions) { this.parserOptions = parserOptions; this.rowParser = new RowParser_1.RowParser(this.parserOptions); } static removeBOM(line) { // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string // conversion translates it to FEFF (UTF-16 BOM) if (line && line.charCodeAt(0) === 0xfeff) { return line.slice(1); } return line; } parse(line, hasMoreData) { const scanner = new Scanner_1.Scanner({ line: Parser.removeBOM(line), parserOptions: this.parserOptions, hasMoreData, }); if (this.parserOptions.supportsComments) { return this.parseWithComments(scanner); } return this.parseWithoutComments(scanner); } parseWithoutComments(scanner) { const rows = []; let shouldContinue = true; while (shouldContinue) { shouldContinue = this.parseRow(scanner, rows); } return { line: scanner.line, rows }; } parseWithComments(scanner) { const { parserOptions } = this; const rows = []; for (let nextToken = scanner.nextCharacterToken; nextToken !== null; nextToken = scanner.nextCharacterToken) { if (Token_1.Token.isTokenComment(nextToken, parserOptions)) { const cursor = scanner.advancePastLine(); if (cursor === null) { return { line: scanner.lineFromCursor, rows }; } if (!scanner.hasMoreCharacters) { return { line: scanner.lineFromCursor, rows }; } scanner.truncateToCursor(); } else if (!this.parseRow(scanner, rows)) { break; } } return { line: scanner.line, rows }; } parseRow(scanner, rows) { const nextToken = scanner.nextNonSpaceToken; if (!nextToken) { return false; } const row = this.rowParser.parse(scanner); if (row === null) { return false; } if (this.parserOptions.ignoreEmpty && RowParser_1.RowParser.isEmptyRow(row)) { return true; } rows.push(row); return true; } } exports.Parser = Parser; //# sourceMappingURL=Parser.js.map

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/consigcody94/office-whisperer'

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