|
|
|
/** heuristically checks whether the text may be a mermaid diagram definition */
|
|
|
|
export const isMaybeMermaidDefinition = (text: string) => {
|
|
|
|
const chartTypes = [
|
|
|
|
"flowchart",
|
|
|
|
"graph",
|
|
|
|
"sequenceDiagram",
|
|
|
|
"classDiagram",
|
|
|
|
"stateDiagram",
|
|
|
|
"stateDiagram-v2",
|
|
|
|
"erDiagram",
|
|
|
|
"journey",
|
|
|
|
"gantt",
|
|
|
|
"pie",
|
|
|
|
"quadrantChart",
|
|
|
|
"requirementDiagram",
|
|
|
|
"gitGraph",
|
|
|
|
"C4Context",
|
|
|
|
"mindmap",
|
|
|
|
"timeline",
|
|
|
|
"zenuml",
|
|
|
|
"sankey",
|
|
|
|
"xychart",
|
|
|
|
"block",
|
|
|
|
];
|
|
|
|
|
|
|
|
const re = new RegExp(
|
|
|
|
`^(?:%%{.*?}%%[\\s\\n]*)?\\b(?:${chartTypes
|
|
|
|
.map((x) => `\\s*${x}(-beta)?`)
|
|
|
|
.join("|")})\\b`,
|
|
|
|
);
|
|
|
|
|
|
|
|
return re.test(text.trim());
|
|
|
|
};
|