diff --git a/packages/parser/src/language/mindmap/mindmap.langium b/packages/parser/src/language/mindmap/mindmap.langium index 4090737d5..2b434f757 100644 --- a/packages/parser/src/language/mindmap/mindmap.langium +++ b/packages/parser/src/language/mindmap/mindmap.langium @@ -67,6 +67,10 @@ terminal ROUNDED_STR_QUOTES: /\(\"([\s\S]*?)\"\)/; terminal ROUNDED_STR: /\(([\s\S]*?)\)/; terminal SQUARE_STR_QUOTES: /\[\"([\s\S]*?)\"\]/; terminal SQUARE_STR: /\[([\s\S]*?)\]/; +terminal BANG_STR_QUOTES: /\[\"([\s\S]*?)\"\]/; +terminal BANG_STR: /\[([\s\S]*?)\]/; +terminal CLOUD_STR_QUOTES: /\)\"([\s\S]*?)\"\(/; +terminal CLOUD_STR: /\)([\s\S]*?)\(/; // terminal CIRCLE_STR: /(?!\(\()[\s\S]+?(?!\(\()/; terminal ID: /[a-zA-Z0-9_\-\.\/]+/; terminal STRING: /"[^"]*"|'[^']*'/; diff --git a/packages/parser/src/language/mindmap/valueConverter.ts b/packages/parser/src/language/mindmap/valueConverter.ts index 28dce2766..1182c7596 100644 --- a/packages/parser/src/language/mindmap/valueConverter.ts +++ b/packages/parser/src/language/mindmap/valueConverter.ts @@ -19,6 +19,14 @@ export class MindmapValueConverter extends AbstractMermaidValueConverter { return input.replace('[', '').replace(']', '').trim(); } else if (rule.name === 'SQUARE_STR_QUOTES') { return input.replace('["', '').replace('"]', '').trim(); + } else if (rule.name === 'BANG_STR') { + return input.replace('))', '').replace('((', '').trim(); + } else if (rule.name === 'BANG_STR_QUOTES') { + return input.replace('))"', '').replace('"((', '').trim(); + } else if (rule.name === 'CLOUD_STR') { + return input.replace(')', '').replace('(', '').trim(); + } else if (rule.name === 'CLOUD_STR_QUOTES') { + return input.replace(')"', '').replace('"(', '').trim(); } else if (rule.name === 'ARCH_TEXT_ICON') { return input.replace(/["()]/g, ''); } else if (rule.name === 'ARCH_TITLE') { diff --git a/packages/parser/tests/mindmap.test.ts b/packages/parser/tests/mindmap.test.ts index c35de81bb..5b11426a2 100644 --- a/packages/parser/tests/mindmap.test.ts +++ b/packages/parser/tests/mindmap.test.ts @@ -174,7 +174,7 @@ describe('Nodes (ported from mindmap.spec.ts)', () => { expect(childNode.desc).toBe('child1'); }); - it('MMP-9 should handle an id and type for a node definition', () => { + it.only('MMP-9 should handle an id and type for a node definition', () => { const result = parse('mindmap\nroot\n theId(child1)'); expect(result.lexerErrors).toHaveLength(0); expect(result.parserErrors).toHaveLength(0); @@ -196,6 +196,7 @@ describe('Nodes (ported from mindmap.spec.ts)', () => { it('MMP-11 multiple types (cloud)', () => { const result = parse('mindmap\nroot)the root('); + console.debug('RESULT:', result.parserErrors); expect(result.lexerErrors).toHaveLength(0); expect(result.parserErrors).toHaveLength(0); const rootNode = result.value.MindmapRows[0].item as OtherComplex;