UNPKG

mermaid

Version:

Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.

105 lines (102 loc) 2.86 kB
import { AbstractMermaidTokenBuilder, AbstractMermaidValueConverter, EmptyFileSystem, MermaidGeneratedSharedModule, RailroadGrammarGeneratedModule, __name as __name2, createDefaultCoreModule, createDefaultSharedCoreModule, inject } from "./chunk-A7G5T7E5.mjs"; import { __name } from "./chunk-PTVI3W5X.mjs"; // ../parser/dist/chunks/mermaid-parser.core/chunk-5TONJI2A.mjs var RailroadTokenBuilder = class extends AbstractMermaidTokenBuilder { static { __name(this, "RailroadTokenBuilder"); } static { __name2(this, "RailroadTokenBuilder"); } constructor() { super(["railroad-beta"]); } }; var decodeEscapedString = /* @__PURE__ */ __name2((input) => { const content = input.slice(1, -1); let value = ""; for (let index = 0; index < content.length; index++) { const character = content[index]; if (character === "\\" && index + 1 < content.length) { index++; const escaped = content[index]; switch (escaped) { case "n": value += "\n"; break; case "r": value += "\r"; break; case "t": value += " "; break; default: value += escaped; } continue; } value += character; } return value; }, "decodeEscapedString"); var RailroadValueConverter = class extends AbstractMermaidValueConverter { static { __name(this, "RailroadValueConverter"); } static { __name2(this, "RailroadValueConverter"); } runConverter(rule, input, cstNode) { const value = super.runConverter(rule, input, cstNode); if (rule.name === "TITLE" && typeof value === "string") { const trimmedValue = value.trim(); if (trimmedValue.startsWith('"') && trimmedValue.endsWith('"') || trimmedValue.startsWith("'") && trimmedValue.endsWith("'")) { return decodeEscapedString(trimmedValue); } } return value; } runCustomConverter(rule, input, _cstNode) { if (rule.name === "RR_STRING") { return decodeEscapedString(input); } return void 0; } }; var RailroadModule = { parser: { TokenBuilder: /* @__PURE__ */ __name2(() => new RailroadTokenBuilder(), "TokenBuilder"), ValueConverter: /* @__PURE__ */ __name2(() => new RailroadValueConverter(), "ValueConverter") } }; function createRailroadServices(context = EmptyFileSystem) { const shared = inject( createDefaultSharedCoreModule(context), MermaidGeneratedSharedModule ); const Railroad = inject( createDefaultCoreModule({ shared }), RailroadGrammarGeneratedModule, RailroadModule ); shared.ServiceRegistry.register(Railroad); return { shared, Railroad }; } __name(createRailroadServices, "createRailroadServices"); __name2(createRailroadServices, "createRailroadServices"); export { RailroadModule, createRailroadServices };