collab/mermaid/packages/parser/src/language/architecture/valueConverter.tsblame
View source
6dd74de1import type { CstNode, GrammarAST, ValueType } from 'langium';
6dd74de2
6dd74de3import { AbstractMermaidValueConverter } from '../common/index.js';
6dd74de4
6dd74de5export class ArchitectureValueConverter extends AbstractMermaidValueConverter {
6dd74de6 protected runCustomConverter(
6dd74de7 rule: GrammarAST.AbstractRule,
6dd74de8 input: string,
6dd74de9 _cstNode: CstNode
6dd74de10 ): ValueType | undefined {
6dd74de11 if (rule.name === 'ARCH_ICON') {
6dd74de12 return input.replace(/[()]/g, '').trim();
6dd74de13 } else if (rule.name === 'ARCH_TEXT_ICON') {
6dd74de14 return input.replace(/["()]/g, '');
6dd74de15 } else if (rule.name === 'ARCH_TITLE') {
6dd74de16 let result = input.replace(/^\[|]$/g, '').trim();
6dd74de17 // Check if wrapped in quotes and remove only outer quotes
6dd74de18 if (
6dd74de19 (result.startsWith('"') && result.endsWith('"')) ||
6dd74de20 (result.startsWith("'") && result.endsWith("'"))
6dd74de21 ) {
6dd74de22 result = result.slice(1, -1);
6dd74de23 // Unescape escaped quotes
6dd74de24 result = result.replace(/\\"/g, '"').replace(/\\'/g, "'");
6dd74de25 }
6dd74de26 return result.trim();
6dd74de27 }
6dd74de28 return undefined;
6dd74de29 }
6dd74de30}