Update: Added folder structure for usecase diagram

on-behalf-of: @Mermaid-Chart <hello@mermaidchart.com>
This commit is contained in:
shubham-mermaid
2025-08-06 14:54:29 +05:30
parent d93d9a521d
commit 5c04a8d09d
18 changed files with 351 additions and 2 deletions

View File

@@ -35,6 +35,11 @@
"id": "treemap",
"grammar": "src/language/treemap/treemap.langium",
"fileExtensions": [".mmd", ".mermaid"]
},
{
"id": "usecase",
"grammar": "src/language/usecase/usecase.langium",
"fileExtensions": [".mmd", ".mermaid"]
}
],
"mode": "production",

View File

@@ -9,6 +9,7 @@ export {
GitGraph,
Radar,
Treemap,
Usecase,
Branch,
Commit,
Merge,
@@ -24,6 +25,7 @@ export {
isBranch,
isCommit,
isMerge,
isUsecase,
} from './generated/ast.js';
export {
@@ -35,6 +37,7 @@ export {
GitGraphGeneratedModule,
RadarGeneratedModule,
TreemapGeneratedModule,
UsecaseGeneratedModule,
} from './generated/module.js';
export * from './gitGraph/index.js';
@@ -45,3 +48,4 @@ export * from './pie/index.js';
export * from './architecture/index.js';
export * from './radar/index.js';
export * from './treemap/index.js';
export * from './usecase/index.js';

View File

@@ -0,0 +1 @@
export * from './module.js';

View File

@@ -0,0 +1,35 @@
import { type DefaultSharedCoreModuleContext, type LangiumCoreServices } from 'langium';
import type { Module, PartialLangiumCoreServices } from 'langium';
import { EmptyFileSystem } from 'langium';
import { UsecaseTokenBuilder } from './tokenBuilder.js';
import { UsecaseValueConverter } from './valueConverter.js';
import { UsecaseValidator } from './usecase-validator.js';
interface UsecaseAddedServices {
parser: {
TokenBuilder: UsecaseTokenBuilder;
ValueConverter: UsecaseValueConverter;
};
validation: {
UsecaseValidator: UsecaseValidator;
};
}
export type UsecaseServices = LangiumCoreServices & UsecaseAddedServices;
export const UsecaseModule: Module<
UsecaseServices,
PartialLangiumCoreServices & UsecaseAddedServices
> = {
parser: {
TokenBuilder: () => new UsecaseTokenBuilder(),
ValueConverter: () => new UsecaseValueConverter(),
},
validation: {
UsecaseValidator: () => new UsecaseValidator(),
},
};
export function createUsecaseServices(_context: DefaultSharedCoreModuleContext = EmptyFileSystem) {
// TODO
}

View File

@@ -0,0 +1,7 @@
import { AbstractMermaidTokenBuilder } from '../common/index.js';
export class UsecaseTokenBuilder extends AbstractMermaidTokenBuilder {
public constructor() {
super(['usecase']);
}
}

View File

@@ -0,0 +1,12 @@
import type { UsecaseServices } from './module.js';
/**
* Register custom validation checks.
*/
export function registerValidationChecks(_services: UsecaseServices) {
// TODO
}
/**
* Implementation of custom validations.
*/
export class UsecaseValidator {}

View File

@@ -0,0 +1 @@
// TODO

View File

@@ -0,0 +1,12 @@
import type { CstNode, GrammarAST, ValueType } from 'langium';
import { AbstractMermaidValueConverter } from '../common/index.js';
export class UsecaseValueConverter extends AbstractMermaidValueConverter {
protected runCustomConverter(
_rule: GrammarAST.AbstractRule,
_input: string,
_cstNode: CstNode
): ValueType | undefined {
return undefined;
}
}

View File

@@ -1,6 +1,15 @@
import type { LangiumParser, ParseResult } from 'langium';
import type { Info, Packet, Pie, Architecture, GitGraph, Radar, Treemap } from './index.js';
import type {
Info,
Packet,
Pie,
Architecture,
GitGraph,
Radar,
Treemap,
// Usecase,
} from './index.js';
export type DiagramAST = Info | Packet | Pie | Architecture | GitGraph | Radar;
@@ -41,6 +50,11 @@ const initializers = {
const parser = createTreemapServices().Treemap.parser.LangiumParser;
parsers.treemap = parser;
},
// usecase: async () => {
// const { createUsecaseServices } = await import('./language/usecase/index.js');
// const parser = createUsecaseServices().Usecase.parser.LangiumParser;
// parsers.usecase = parser;
// },
} as const;
export async function parse(diagramType: 'info', text: string): Promise<Info>;
@@ -50,6 +64,7 @@ export async function parse(diagramType: 'architecture', text: string): Promise<
export async function parse(diagramType: 'gitGraph', text: string): Promise<GitGraph>;
export async function parse(diagramType: 'radar', text: string): Promise<Radar>;
export async function parse(diagramType: 'treemap', text: string): Promise<Treemap>;
// export async function parse(diagramType: 'usecase', text: string): Promise<Usecase>;
export async function parse<T extends DiagramAST>(
diagramType: keyof typeof initializers,