mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-22 17:56:43 +02:00
49 lines
2.1 KiB
TypeScript
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;
|
|
}
|
|
}
|