mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-19 15:30:03 +02:00
Update: Added folder structure for usecase diagram
on-behalf-of: @Mermaid-Chart <hello@mermaidchart.com>
This commit is contained in:
@@ -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",
|
||||
|
@@ -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';
|
||||
|
1
packages/parser/src/language/usecase/index.ts
Normal file
1
packages/parser/src/language/usecase/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './module.js';
|
35
packages/parser/src/language/usecase/module.ts
Normal file
35
packages/parser/src/language/usecase/module.ts
Normal 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
|
||||
}
|
7
packages/parser/src/language/usecase/tokenBuilder.ts
Normal file
7
packages/parser/src/language/usecase/tokenBuilder.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { AbstractMermaidTokenBuilder } from '../common/index.js';
|
||||
|
||||
export class UsecaseTokenBuilder extends AbstractMermaidTokenBuilder {
|
||||
public constructor() {
|
||||
super(['usecase']);
|
||||
}
|
||||
}
|
12
packages/parser/src/language/usecase/usecase-validator.ts
Normal file
12
packages/parser/src/language/usecase/usecase-validator.ts
Normal 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 {}
|
1
packages/parser/src/language/usecase/usecase.langium
Normal file
1
packages/parser/src/language/usecase/usecase.langium
Normal file
@@ -0,0 +1 @@
|
||||
// TODO
|
12
packages/parser/src/language/usecase/valueConverter.ts
Normal file
12
packages/parser/src/language/usecase/valueConverter.ts
Normal 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;
|
||||
}
|
||||
}
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user