mermaid
Version:
Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.
108 lines (105 loc) • 3.05 kB
JavaScript
import {
AbstractMermaidTokenBuilder,
AbstractMermaidValueConverter,
EmptyFileSystem,
MermaidGeneratedSharedModule,
RailroadEbnfGrammarGeneratedModule,
__name as __name2,
createDefaultCoreModule,
createDefaultSharedCoreModule,
inject
} from "./chunk-A7G5T7E5.mjs";
import {
__name
} from "./chunk-PTVI3W5X.mjs";
// ../parser/dist/chunks/mermaid-parser.core/chunk-U6XO7XAA.mjs
var RailroadEbnfTokenBuilder = class extends AbstractMermaidTokenBuilder {
static {
__name(this, "RailroadEbnfTokenBuilder");
}
static {
__name2(this, "RailroadEbnfTokenBuilder");
}
constructor() {
super(["railroad-ebnf-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 RailroadEbnfValueConverter = class extends AbstractMermaidValueConverter {
static {
__name(this, "RailroadEbnfValueConverter");
}
static {
__name2(this, "RailroadEbnfValueConverter");
}
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 === "EBNF_STRING") {
return decodeEscapedString(input);
}
if (rule.name === "EBNF_SPECIAL_SEQUENCE") {
return input.slice(1, -1).trim();
}
return void 0;
}
};
var RailroadEbnfModule = {
parser: {
TokenBuilder: /* @__PURE__ */ __name2(() => new RailroadEbnfTokenBuilder(), "TokenBuilder"),
ValueConverter: /* @__PURE__ */ __name2(() => new RailroadEbnfValueConverter(), "ValueConverter")
}
};
function createRailroadEbnfServices(context = EmptyFileSystem) {
const shared = inject(
createDefaultSharedCoreModule(context),
MermaidGeneratedSharedModule
);
const RailroadEbnf = inject(
createDefaultCoreModule({ shared }),
RailroadEbnfGrammarGeneratedModule,
RailroadEbnfModule
);
shared.ServiceRegistry.register(RailroadEbnf);
return { shared, RailroadEbnf };
}
__name(createRailroadEbnfServices, "createRailroadEbnfServices");
__name2(createRailroadEbnfServices, "createRailroadEbnfServices");
export {
RailroadEbnfModule,
createRailroadEbnfServices
};