diff --git a/.changeset/stale-crabs-deny.md b/.changeset/stale-crabs-deny.md new file mode 100644 index 000000000..a151587be --- /dev/null +++ b/.changeset/stale-crabs-deny.md @@ -0,0 +1,5 @@ +--- +'mermaid': patch +--- + +chore: use Treemap instead of TreemapDoc in parser. diff --git a/packages/parser/src/language/index.ts b/packages/parser/src/language/index.ts index c41d7eeb8..9b31af5ba 100644 --- a/packages/parser/src/language/index.ts +++ b/packages/parser/src/language/index.ts @@ -8,7 +8,7 @@ export { Architecture, GitGraph, Radar, - TreemapDoc, + Treemap, Branch, Commit, Merge, @@ -20,7 +20,7 @@ export { isPieSection, isArchitecture, isGitGraph, - isTreemapDoc, + isTreemap, isBranch, isCommit, isMerge, diff --git a/packages/parser/src/language/treemap/treemap-validator.ts b/packages/parser/src/language/treemap/treemap-validator.ts index 9a9e5c469..4509b4b58 100644 --- a/packages/parser/src/language/treemap/treemap-validator.ts +++ b/packages/parser/src/language/treemap/treemap-validator.ts @@ -1,5 +1,5 @@ import type { ValidationAcceptor, ValidationChecks } from 'langium'; -import type { MermaidAstType, TreemapDoc } from '../generated/ast.js'; +import type { MermaidAstType, Treemap } from '../generated/ast.js'; import type { TreemapServices } from './module.js'; /** @@ -9,10 +9,10 @@ export function registerValidationChecks(services: TreemapServices) { const validator = services.validation.TreemapValidator; const registry = services.validation.ValidationRegistry; if (registry) { - // Use any to bypass type checking since we know TreemapDoc is part of the AST + // Use any to bypass type checking since we know Treemap is part of the AST // but the type system is having trouble with it const checks: ValidationChecks = { - TreemapDoc: validator.checkSingleRoot.bind(validator), + Treemap: validator.checkSingleRoot.bind(validator), // Remove unused validation for TreemapRow }; registry.register(checks, validator); @@ -27,7 +27,7 @@ export class TreemapValidator { * Validates that a treemap has only one root node. * A root node is defined as a node that has no indentation. */ - checkSingleRoot(doc: TreemapDoc, accept: ValidationAcceptor): void { + checkSingleRoot(doc: Treemap, accept: ValidationAcceptor): void { let rootNodeIndentation; for (const row of doc.TreemapRows) { diff --git a/packages/parser/src/language/treemap/treemap.langium b/packages/parser/src/language/treemap/treemap.langium index 45ee2588f..c35d5f0e9 100644 --- a/packages/parser/src/language/treemap/treemap.langium +++ b/packages/parser/src/language/treemap/treemap.langium @@ -34,14 +34,14 @@ interface ClassDefStatement { className: string styleText: string // Optional style text } -interface TreemapDoc { +interface Treemap { TreemapRows: TreemapRow[] title?: string accTitle?: string accDescr?: string } -entry TreemapDoc returns TreemapDoc: +entry Treemap returns Treemap: TREEMAP_KEYWORD ( TitleAndAccessibilities diff --git a/packages/parser/tests/treemap.test.ts b/packages/parser/tests/treemap.test.ts index 6afb6e7db..b05ab39fc 100644 --- a/packages/parser/tests/treemap.test.ts +++ b/packages/parser/tests/treemap.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; import { expectNoErrorsOrAlternatives } from './test-util.js'; -import type { TreemapDoc, Section, Leaf, TreemapRow } from '../src/language/generated/ast.js'; +import type { Treemap, Section, Leaf, TreemapRow } from '../src/language/generated/ast.js'; import type { LangiumParser } from 'langium'; import { createTreemapServices } from '../src/language/treemap/module.js'; @@ -9,21 +9,21 @@ describe('Treemap Parser', () => { const parser: LangiumParser = services.parser.LangiumParser; const parse = (input: string) => { - return parser.parse(input); + return parser.parse(input); }; describe('Basic Parsing', () => { it('should parse empty treemap', () => { const result = parse('treemap'); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); expect(result.value.TreemapRows).toHaveLength(0); }); it('should parse a section node', () => { const result = parse('treemap\n"Root"'); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); expect(result.value.TreemapRows).toHaveLength(1); if (result.value.TreemapRows[0].item) { expect(result.value.TreemapRows[0].item.$type).toBe('Section'); @@ -39,7 +39,7 @@ describe('Treemap Parser', () => { "Child2" : 200 `); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); expect(result.value.TreemapRows).toHaveLength(3); if (result.value.TreemapRows[0].item) { @@ -95,7 +95,7 @@ describe('Treemap Parser', () => { // We're only checking that the multiple root nodes parse successfully // The validation errors would be reported by the validator during validation - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); expect(result.value.TreemapRows).toHaveLength(2); }); }); @@ -104,7 +104,7 @@ describe('Treemap Parser', () => { it('should parse a treemap with title', () => { const result = parse('treemap\ntitle My Treemap Diagram\n"Root"\n "Child": 100'); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); // We can't directly test the title property due to how Langium processes TitleAndAccessibilities // but we can verify the TreemapRows are parsed correctly expect(result.value.TreemapRows).toHaveLength(2); @@ -113,7 +113,7 @@ describe('Treemap Parser', () => { it('should parse a treemap with accTitle', () => { const result = parse('treemap\naccTitle: Accessible Title\n"Root"\n "Child": 100'); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); // We can't directly test the accTitle property due to how Langium processes TitleAndAccessibilities expect(result.value.TreemapRows).toHaveLength(2); }); @@ -123,7 +123,7 @@ describe('Treemap Parser', () => { 'treemap\naccDescr: This is an accessible description\n"Root"\n "Child": 100' ); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); // We can't directly test the accDescr property due to how Langium processes TitleAndAccessibilities expect(result.value.TreemapRows).toHaveLength(2); }); @@ -136,7 +136,7 @@ accDescr: This is an accessible description "Root" "Child": 100`); expectNoErrorsOrAlternatives(result); - expect(result.value.$type).toBe('TreemapDoc'); + expect(result.value.$type).toBe('Treemap'); // We can't directly test these properties due to how Langium processes TitleAndAccessibilities expect(result.value.TreemapRows).toHaveLength(2); });