Merge branch 'develop' into feature/4401_creating_langium_parser_gitGraph

This commit is contained in:
Austin-Fulbright
2024-08-20 06:03:37 -04:00
committed by GitHub
5 changed files with 51 additions and 11 deletions

View File

@@ -56,6 +56,7 @@ To add an integration to this list, see the [Integrations - create page](./integ
- [SVG diagram generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) - [SVG diagram generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator)
- [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) ✅ - [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) ✅
- [Mermaid Plugin for JetBrains IDEs](https://plugins.jetbrains.com/plugin/20146-mermaid) - [Mermaid Plugin for JetBrains IDEs](https://plugins.jetbrains.com/plugin/20146-mermaid)
- [MonsterWriter](https://www.monsterwriter.com/) ✅
- [Joplin](https://joplinapp.org) ✅ - [Joplin](https://joplinapp.org) ✅
- [LiveBook](https://livebook.dev) ✅ - [LiveBook](https://livebook.dev) ✅
- [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) ✅ - [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) ✅

View File

@@ -1,11 +1,11 @@
import { line, select } from 'd3'; import { line, select } from 'd3';
import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js'; import { layout as dagreLayout } from 'dagre-d3-es/src/dagre/index.js';
import * as graphlib from 'dagre-d3-es/src/graphlib/index.js'; import * as graphlib from 'dagre-d3-es/src/graphlib/index.js';
import { getConfig } from '../../diagram-api/diagramAPI.js';
import { log } from '../../logger.js'; import { log } from '../../logger.js';
import { configureSvgSize } from '../../setupGraphViewbox.js'; import { configureSvgSize } from '../../setupGraphViewbox.js';
import common from '../common/common.js'; import common from '../common/common.js';
import markers from './requirementMarkers.js'; import markers from './requirementMarkers.js';
import { getConfig } from '../../diagram-api/diagramAPI.js';
let conf = {}; let conf = {};
let relCnt = 0; let relCnt = 0;

View File

@@ -18,7 +18,7 @@
\#[^\n]* /* skip comments */ \#[^\n]* /* skip comments */
"timeline" return 'timeline'; "timeline" return 'timeline';
"title"\s[^#\n;]+ return 'title'; "title"\s[^\n]+ return 'title';
accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; } accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; }
<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; } <acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; }
accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; } accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; }
@@ -26,11 +26,11 @@ accDescr\s*":"\s* { this.begin("ac
accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
<acc_descr_multiline>[\}] { this.popState(); } <acc_descr_multiline>[\}] { this.popState(); }
<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value"; <acc_descr_multiline>[^\}]* return "acc_descr_multiline_value";
"section"\s[^#:\n;]+ return 'section'; "section"\s[^:\n]+ return 'section';
// event starting with "==>" keyword // event starting with "==>" keyword
":"\s[^#:\n;]+ return 'event'; ":"\s[^:\n]+ return 'event';
[^#:\n;]+ return 'period'; [^#:\n]+ return 'period';
<<EOF>> return 'EOF'; <<EOF>> return 'EOF';

View File

@@ -1,6 +1,7 @@
import { setLogLevel } from '../../diagram-api/diagramAPI.js';
import * as commonDb from '../common/commonDb.js';
import { parser as timeline } from './parser/timeline.jison'; import { parser as timeline } from './parser/timeline.jison';
import * as timelineDB from './timelineDb.js'; import * as timelineDB from './timelineDb.js';
import { setLogLevel } from '../../diagram-api/diagramAPI.js';
describe('when parsing a timeline ', function () { describe('when parsing a timeline ', function () {
beforeEach(function () { beforeEach(function () {
@@ -9,7 +10,7 @@ describe('when parsing a timeline ', function () {
setLogLevel('trace'); setLogLevel('trace');
}); });
describe('Timeline', function () { describe('Timeline', function () {
it('TL-1 should handle a simple section definition abc-123', function () { it('should handle a simple section definition abc-123', function () {
let str = `timeline let str = `timeline
section abc-123`; section abc-123`;
@@ -17,7 +18,7 @@ describe('when parsing a timeline ', function () {
expect(timelineDB.getSections()).to.deep.equal(['abc-123']); expect(timelineDB.getSections()).to.deep.equal(['abc-123']);
}); });
it('TL-2 should handle a simple section and only two tasks', function () { it('should handle a simple section and only two tasks', function () {
let str = `timeline let str = `timeline
section abc-123 section abc-123
task1 task1
@@ -29,7 +30,7 @@ describe('when parsing a timeline ', function () {
}); });
}); });
it('TL-3 should handle a two section and two coressponding tasks', function () { it('should handle a two section and two coressponding tasks', function () {
let str = `timeline let str = `timeline
section abc-123 section abc-123
task1 task1
@@ -50,7 +51,7 @@ describe('when parsing a timeline ', function () {
}); });
}); });
it('TL-4 should handle a section, and task and its events', function () { it('should handle a section, and task and its events', function () {
let str = `timeline let str = `timeline
section abc-123 section abc-123
task1: event1 task1: event1
@@ -74,7 +75,7 @@ describe('when parsing a timeline ', function () {
}); });
}); });
it('TL-5 should handle a section, and task and its multi line events', function () { it('should handle a section, and task and its multi line events', function () {
let str = `timeline let str = `timeline
section abc-123 section abc-123
task1: event1 task1: event1
@@ -98,5 +99,42 @@ describe('when parsing a timeline ', function () {
} }
}); });
}); });
it('should handle a title, section, task, and events with semicolons', function () {
let str = `timeline
title ;my;title;
section ;a;bc-123;
;ta;sk1;: ;ev;ent1; : ;ev;ent2; : ;ev;ent3;
`;
timeline.parse(str);
expect(commonDb.getDiagramTitle()).equal(';my;title;');
expect(timelineDB.getSections()).to.deep.equal([';a;bc-123;']);
expect(timelineDB.getTasks()[0].events).toMatchInlineSnapshot(`
[
";ev;ent1; ",
";ev;ent2; ",
";ev;ent3;",
]
`);
});
it('should handle a title, section, task, and events with hashtags', function () {
let str = `timeline
title #my#title#
section #a#bc-123#
task1: #ev#ent1# : #ev#ent2# : #ev#ent3#
`;
timeline.parse(str);
expect(commonDb.getDiagramTitle()).equal('#my#title#');
expect(timelineDB.getSections()).to.deep.equal(['#a#bc-123#']);
expect(timelineDB.getTasks()[0].task).equal('task1');
expect(timelineDB.getTasks()[0].events).toMatchInlineSnapshot(`
[
"#ev#ent1# ",
"#ev#ent2# ",
"#ev#ent3#",
]
`);
});
}); });
}); });

View File

@@ -51,6 +51,7 @@ To add an integration to this list, see the [Integrations - create page](./integ
- [SVG diagram generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator) - [SVG diagram generator](https://github.com/SimonKenyonShepard/mermaidjs-github-svg-generator)
- [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) ✅ - [GitLab](https://docs.gitlab.com/ee/user/markdown.html#diagrams-and-flowcharts) ✅
- [Mermaid Plugin for JetBrains IDEs](https://plugins.jetbrains.com/plugin/20146-mermaid) - [Mermaid Plugin for JetBrains IDEs](https://plugins.jetbrains.com/plugin/20146-mermaid)
- [MonsterWriter](https://www.monsterwriter.com/) ✅
- [Joplin](https://joplinapp.org) ✅ - [Joplin](https://joplinapp.org) ✅
- [LiveBook](https://livebook.dev) ✅ - [LiveBook](https://livebook.dev) ✅
- [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) ✅ - [Tuleap](https://docs.tuleap.org/user-guide/writing-in-tuleap.html#graphs) ✅