75 lines
1.9 KiB
TypeScript
75 lines
1.9 KiB
TypeScript
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,
|
|
});
|