✨ Added mermaid language support
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
import { LRLanguage } from '@codemirror/language';
|
||||
import { parseMixed } from '@lezer/common';
|
||||
import {
|
||||
mermaidParser,
|
||||
mindmapParser,
|
||||
pieParser,
|
||||
flowchartParser,
|
||||
sequenceParser,
|
||||
journeyParser,
|
||||
requirementParser,
|
||||
ganttParser,
|
||||
} from '../parsers';
|
||||
import { DiagramType, MermaidLanguageType } from '../types';
|
||||
|
||||
export const mermaidLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Mermaid,
|
||||
parser: mermaidParser.configure({
|
||||
wrap: parseMixed((node) => {
|
||||
switch (node.name) {
|
||||
case DiagramType.Mindmap:
|
||||
return { parser: mindmapParser };
|
||||
case DiagramType.Pie:
|
||||
return { parser: pieParser };
|
||||
case DiagramType.Flowchart:
|
||||
return { parser: flowchartParser };
|
||||
case DiagramType.Sequence:
|
||||
return { parser: sequenceParser };
|
||||
case DiagramType.Journey:
|
||||
return { parser: journeyParser };
|
||||
case DiagramType.Requirement:
|
||||
return { parser: requirementParser };
|
||||
case DiagramType.Gantt:
|
||||
return { parser: ganttParser };
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
export const mindmapLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Mindmap,
|
||||
parser: mindmapParser,
|
||||
});
|
||||
|
||||
export const pieLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Pie,
|
||||
parser: pieParser,
|
||||
});
|
||||
|
||||
export const flowchartLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Flowchart,
|
||||
parser: flowchartParser,
|
||||
});
|
||||
|
||||
export const sequenceLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Sequence,
|
||||
parser: sequenceParser,
|
||||
});
|
||||
|
||||
export const journeyLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Journey,
|
||||
parser: journeyParser,
|
||||
});
|
||||
|
||||
export const requirementLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Requirement,
|
||||
parser: requirementParser,
|
||||
});
|
||||
|
||||
export const ganttLanguage = LRLanguage.define({
|
||||
name: MermaidLanguageType.Gantt,
|
||||
parser: ganttParser,
|
||||
});
|
||||
Reference in New Issue
Block a user