1.0 KB31 lines
Blame
1import type { CstNode, GrammarAST, ValueType } from 'langium';
2
3import { AbstractMermaidValueConverter } from '../common/index.js';
4
5export class ArchitectureValueConverter extends AbstractMermaidValueConverter {
6 protected runCustomConverter(
7 rule: GrammarAST.AbstractRule,
8 input: string,
9 _cstNode: CstNode
10 ): ValueType | undefined {
11 if (rule.name === 'ARCH_ICON') {
12 return input.replace(/[()]/g, '').trim();
13 } else if (rule.name === 'ARCH_TEXT_ICON') {
14 return input.replace(/["()]/g, '');
15 } else if (rule.name === 'ARCH_TITLE') {
16 let result = input.replace(/^\[|]$/g, '').trim();
17 // Check if wrapped in quotes and remove only outer quotes
18 if (
19 (result.startsWith('"') && result.endsWith('"')) ||
20 (result.startsWith("'") && result.endsWith("'"))
21 ) {
22 result = result.slice(1, -1);
23 // Unescape escaped quotes
24 result = result.replace(/\\"/g, '"').replace(/\\'/g, "'");
25 }
26 return result.trim();
27 }
28 return undefined;
29 }
30}
31