Merge branch 'develop' into 5367/architecture-diagram

This commit is contained in:
Knut Sveidqvist
2024-08-28 13:50:05 +02:00
committed by GitHub
121 changed files with 7448 additions and 4529 deletions

View File

@@ -0,0 +1,87 @@
grammar GitGraph
interface Common {
accDescr?: string;
accTitle?: string;
title?: string;
}
fragment TitleAndAccessibilities:
((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) EOL)+
;
fragment EOL returns string:
NEWLINE+ | EOF
;
terminal NEWLINE: /\r?\n/;
terminal ACC_DESCR: /[\t ]*accDescr(?:[\t ]*:([^\n\r]*?(?=%%)|[^\n\r]*)|\s*{([^}]*)})/;
terminal ACC_TITLE: /[\t ]*accTitle[\t ]*:(?:[^\n\r]*?(?=%%)|[^\n\r]*)/;
terminal TITLE: /[\t ]*title(?:[\t ][^\n\r]*?(?=%%)|[\t ][^\n\r]*|)/;
hidden terminal WHITESPACE: /[\t ]+/;
hidden terminal YAML: /---[\t ]*\r?\n(?:[\S\s]*?\r?\n)?---(?:\r?\n|(?!\S))/;
hidden terminal DIRECTIVE: /[\t ]*%%{[\S\s]*?}%%(?:\r?\n|(?!\S))/;
hidden terminal SINGLE_LINE_COMMENT: /[\t ]*%%[^\n\r]*/;
entry GitGraph:
NEWLINE*
('gitGraph' | 'gitGraph' ':' | 'gitGraph:' | ('gitGraph' Direction ':'))
NEWLINE*
(
NEWLINE*
(TitleAndAccessibilities |
statements+=Statement |
NEWLINE)*
)
;
Statement
: Commit
| Branch
| Merge
| Checkout
| CherryPicking
;
Direction:
dir=('LR' | 'TB' | 'BT');
Commit:
'commit'
(
'id:' id=STRING
|'msg:'? message=STRING
|'tag:' tags+=STRING
|'type:' type=('NORMAL' | 'REVERSE' | 'HIGHLIGHT')
)* EOL;
Branch:
'branch' name=(ID|STRING)
('order:' order=INT)?
EOL;
Merge:
'merge' branch=(ID|STRING)
(
'id:' id=STRING
|'tag:' tags+=STRING
|'type:' type=('NORMAL' | 'REVERSE' | 'HIGHLIGHT')
)* EOL;
Checkout:
('checkout'|'switch') branch=(ID|STRING) EOL;
CherryPicking:
'cherry-pick'
(
'id:' id=STRING
|'tag:' tags+=STRING
|'parent:' parent=STRING
)* EOL;
terminal INT returns number: /[0-9]+(?=\s)/;
terminal ID returns string: /\w([-\./\w]*[-\w])?/;
terminal STRING: /"[^"]*"|'[^']*'/;

View File

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

View File

@@ -0,0 +1,52 @@
import type {
DefaultSharedCoreModuleContext,
LangiumCoreServices,
LangiumSharedCoreServices,
Module,
PartialLangiumCoreServices,
} from 'langium';
import {
inject,
createDefaultCoreModule,
createDefaultSharedCoreModule,
EmptyFileSystem,
} from 'langium';
import { CommonValueConverter } from '../common/valueConverter.js';
import { MermaidGeneratedSharedModule, GitGraphGeneratedModule } from '../generated/module.js';
import { GitGraphTokenBuilder } from './tokenBuilder.js';
interface GitGraphAddedServices {
parser: {
TokenBuilder: GitGraphTokenBuilder;
ValueConverter: CommonValueConverter;
};
}
export type GitGraphServices = LangiumCoreServices & GitGraphAddedServices;
export const GitGraphModule: Module<
GitGraphServices,
PartialLangiumCoreServices & GitGraphAddedServices
> = {
parser: {
TokenBuilder: () => new GitGraphTokenBuilder(),
ValueConverter: () => new CommonValueConverter(),
},
};
export function createGitGraphServices(context: DefaultSharedCoreModuleContext = EmptyFileSystem): {
shared: LangiumSharedCoreServices;
GitGraph: GitGraphServices;
} {
const shared: LangiumSharedCoreServices = inject(
createDefaultSharedCoreModule(context),
MermaidGeneratedSharedModule
);
const GitGraph: GitGraphServices = inject(
createDefaultCoreModule({ shared }),
GitGraphGeneratedModule,
GitGraphModule
);
shared.ServiceRegistry.register(GitGraph);
return { shared, GitGraph };
}

View File

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

View File

@@ -6,6 +6,11 @@ export {
Pie,
PieSection,
Architecture,
GitGraph,
Branch,
Commit,
Merge,
Statement,
isCommon,
isInfo,
isPacket,
@@ -13,6 +18,10 @@ export {
isPie,
isPieSection,
isArchitecture,
isGitGraph,
isBranch,
isCommit,
isMerge,
} from './generated/ast.js';
export {
@@ -21,8 +30,10 @@ export {
PacketGeneratedModule,
PieGeneratedModule,
ArchitectureGeneratedModule,
GitGraphGeneratedModule,
} from './generated/module.js';
export * from './gitGraph/index.js';
export * from './common/index.js';
export * from './info/index.js';
export * from './packet/index.js';