Files
mermaid/packages/parser/src/language/mindmap/valueConverter.ts
Knut Sveidqvist 30d2cac243 All tests passing
2025-04-29 15:20:42 +02:00

49 lines
2.1 KiB
TypeScript

import type { CstNode, GrammarAST, ValueType } from 'langium';
import { AbstractMermaidValueConverter } from '../common/index.js';
export class MindmapValueConverter extends AbstractMermaidValueConverter {
protected runCustomConverter(
rule: GrammarAST.AbstractRule,
input: string,
_cstNode: CstNode
): ValueType | undefined {
if (rule.name === 'CIRCLE_STR') {
return input.replace('((', '').replace('))', '').trim();
} else if (rule.name === 'CIRCLE_QSTR') {
return input.replace('(("', '').replace('"))', '').trim();
} else if (rule.name === 'ROUNDED_STR') {
return input.replace('(', '').replace(')', '').trim();
} else if (rule.name === 'ROUNDED_QSTR') {
return input.replace('("', '').replace('")', '').trim();
} else if (rule.name === 'SQUARE_STR') {
return input.replace('[', '').replace(']', '').trim();
} else if (rule.name === 'SQUARE_QSTR') {
return input.replace('["', '').replace('"]', '').trim();
} else if (rule.name === 'BANG_STR') {
return input.replace('))', '').replace('((', '').trim();
} else if (rule.name === 'BANG_QSTR') {
return input.replace('))"', '').replace('"((', '').trim();
} else if (rule.name === 'HEXAGON_STR') {
return input.replace('{{', '').replace('}}', '').trim();
} else if (rule.name === 'HEXAGON_QSTR') {
return input.replace('{{"', '').replace('"}}', '').trim();
} else if (rule.name === 'CLOUD_STR') {
return input.replace(')', '').replace('(', '').trim();
} else if (rule.name === 'CLOUD_QSTR') {
return input.replace(')"', '').replace('"(', '').trim();
} else if (rule.name === 'ARCH_TEXT_ICON') {
return input.replace(/["()]/g, '');
} else if (rule.name === 'ARCH_TITLE') {
return input.replace(/[[\]]/g, '').trim();
} else if (rule.name === 'CLASS') {
return input.replace(':::', '').trim();
} else if (rule.name === 'ICON') {
return input.replace('::icon(', '').replace(')', '').trim();
} else if (rule.name === 'INDENTATION') {
return input.length;
}
return undefined;
}
}