mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-08-29 13:16:40 +02:00
Merge pull request #5095 from FutzMonitor/issue1981
Changes to Gantt Parsers to allow hashes and semicolons to titles, sections, and task data.
This commit is contained in:
@@ -583,4 +583,106 @@ describe('Gantt diagram', () => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should render when there's a semicolon in the title", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title ;Gantt With a Semicolon in the Title
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section Section
|
||||||
|
A task :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render when there's a semicolon in a section is true", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title Gantt Digram
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section ;Section With a Semicolon
|
||||||
|
A task :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render when there's a semicolon in the task data", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title Gantt Digram
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section Section
|
||||||
|
;A task with a semiclon :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render when there's a hashtag in the title", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title #Gantt With a Hashtag in the Title
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section Section
|
||||||
|
A task :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render when there's a hashtag in a section is true", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title Gantt Digram
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section #Section With a Hashtag
|
||||||
|
A task :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should render when there's a hashtag in the task data", () => {
|
||||||
|
imgSnapshotTest(
|
||||||
|
`
|
||||||
|
gantt
|
||||||
|
title Gantt Digram
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section Section
|
||||||
|
#A task with a hashtag :a1, 2014-01-01, 30d
|
||||||
|
Another task :after a1 , 20d
|
||||||
|
section Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
`,
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -30,6 +30,21 @@
|
|||||||
</pre>
|
</pre>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
<pre class="mermaid">
|
||||||
|
gantt
|
||||||
|
title #; Gantt Diagrams Allow Semicolons and Hashtags #;!
|
||||||
|
accTitle: A simple sample gantt diagram
|
||||||
|
accDescr: 2 sections with 2 tasks each, from 2014
|
||||||
|
dateFormat YYYY-MM-DD
|
||||||
|
section #;Section
|
||||||
|
#;A task :a1, 2014-01-01, 30d
|
||||||
|
#;Another task :after a1 , 20d
|
||||||
|
section #;Another
|
||||||
|
Task in sec :2014-01-12 , 12d
|
||||||
|
another task : 24d
|
||||||
|
</pre>
|
||||||
|
<hr />
|
||||||
|
|
||||||
<pre class="mermaid">
|
<pre class="mermaid">
|
||||||
gantt
|
gantt
|
||||||
title Airworks roadmap
|
title Airworks roadmap
|
||||||
|
@@ -27,11 +27,10 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multili
|
|||||||
|
|
||||||
\%\%(?!\{)*[^\n]* /* skip comments */
|
\%\%(?!\{)*[^\n]* /* skip comments */
|
||||||
[^\}]\%\%*[^\n]* /* skip comments */
|
[^\}]\%\%*[^\n]* /* skip comments */
|
||||||
\%\%*[^\n]*[\n]* /* do nothing */
|
\%\%*[^\n]*[\n]* /* do nothing */
|
||||||
|
|
||||||
[\n]+ return 'NL';
|
[\n]+ return 'NL';
|
||||||
\s+ /* skip whitespace */
|
\s+ /* skip whitespace */
|
||||||
\#[^\n]* /* skip comments */
|
|
||||||
\%%[^\n]* /* skip comments */
|
\%%[^\n]* /* skip comments */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -86,10 +85,10 @@ weekday\s+friday return 'weekday_friday'
|
|||||||
weekday\s+saturday return 'weekday_saturday'
|
weekday\s+saturday return 'weekday_saturday'
|
||||||
weekday\s+sunday return 'weekday_sunday'
|
weekday\s+sunday return 'weekday_sunday'
|
||||||
\d\d\d\d"-"\d\d"-"\d\d return 'date';
|
\d\d\d\d"-"\d\d"-"\d\d return 'date';
|
||||||
"title"\s[^#\n;]+ return 'title';
|
"title"\s[^\n]+ return 'title';
|
||||||
"accDescription"\s[^#\n;]+ return 'accDescription'
|
"accDescription"\s[^#\n;]+ return 'accDescription'
|
||||||
"section"\s[^#:\n;]+ return 'section';
|
"section"\s[^\n]+ return 'section';
|
||||||
[^#:\n;]+ return 'taskTxt';
|
[^:\n]+ return 'taskTxt';
|
||||||
":"[^#\n;]+ return 'taskData';
|
":"[^#\n;]+ return 'taskData';
|
||||||
":" return ':';
|
":" return ':';
|
||||||
<<EOF>> return 'EOF';
|
<<EOF>> return 'EOF';
|
||||||
|
@@ -28,8 +28,12 @@ describe('when parsing a gantt diagram it', function () {
|
|||||||
});
|
});
|
||||||
it('should handle a title definition', function () {
|
it('should handle a title definition', function () {
|
||||||
const str = 'gantt\ndateFormat yyyy-mm-dd\ntitle Adding gantt diagram functionality to mermaid';
|
const str = 'gantt\ndateFormat yyyy-mm-dd\ntitle Adding gantt diagram functionality to mermaid';
|
||||||
|
const semi = 'gantt\ndateFormat yyyy-mm-dd\ntitle ;Gantt diagram titles support semicolons';
|
||||||
|
const hash = 'gantt\ndateFormat yyyy-mm-dd\ntitle #Gantt diagram titles support hashtags';
|
||||||
|
|
||||||
expect(parserFnConstructor(str)).not.toThrow();
|
expect(parserFnConstructor(str)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(semi)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(hash)).not.toThrow();
|
||||||
});
|
});
|
||||||
it('should handle an excludes definition', function () {
|
it('should handle an excludes definition', function () {
|
||||||
const str =
|
const str =
|
||||||
@@ -53,7 +57,23 @@ describe('when parsing a gantt diagram it', function () {
|
|||||||
'excludes weekdays 2019-02-01\n' +
|
'excludes weekdays 2019-02-01\n' +
|
||||||
'section Documentation';
|
'section Documentation';
|
||||||
|
|
||||||
|
const semi =
|
||||||
|
'gantt\n' +
|
||||||
|
'dateFormat yyyy-mm-dd\n' +
|
||||||
|
'title Adding gantt diagram functionality to mermaid\n' +
|
||||||
|
'excludes weekdays 2019-02-01\n' +
|
||||||
|
'section ;Documentation';
|
||||||
|
|
||||||
|
const hash =
|
||||||
|
'gantt\n' +
|
||||||
|
'dateFormat yyyy-mm-dd\n' +
|
||||||
|
'title Adding gantt diagram functionality to mermaid\n' +
|
||||||
|
'excludes weekdays 2019-02-01\n' +
|
||||||
|
'section #Documentation';
|
||||||
|
|
||||||
expect(parserFnConstructor(str)).not.toThrow();
|
expect(parserFnConstructor(str)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(semi)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(hash)).not.toThrow();
|
||||||
});
|
});
|
||||||
it('should handle multiline section titles with different line breaks', function () {
|
it('should handle multiline section titles with different line breaks', function () {
|
||||||
const str =
|
const str =
|
||||||
@@ -73,7 +93,23 @@ describe('when parsing a gantt diagram it', function () {
|
|||||||
'section Documentation\n' +
|
'section Documentation\n' +
|
||||||
'Design jison grammar:des1, 2014-01-01, 2014-01-04';
|
'Design jison grammar:des1, 2014-01-01, 2014-01-04';
|
||||||
|
|
||||||
|
const semi =
|
||||||
|
'gantt\n' +
|
||||||
|
'dateFormat YYYY-MM-DD\n' +
|
||||||
|
'title Adding gantt diagram functionality to mermaid\n' +
|
||||||
|
'section Documentation\n' +
|
||||||
|
';Design jison grammar:des1, 2014-01-01, 2014-01-04';
|
||||||
|
|
||||||
|
const hash =
|
||||||
|
'gantt\n' +
|
||||||
|
'dateFormat YYYY-MM-DD\n' +
|
||||||
|
'title Adding gantt diagram functionality to mermaid\n' +
|
||||||
|
'section Documentation\n' +
|
||||||
|
'#Design jison grammar:des1, 2014-01-01, 2014-01-04';
|
||||||
|
|
||||||
expect(parserFnConstructor(str)).not.toThrow();
|
expect(parserFnConstructor(str)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(semi)).not.toThrow();
|
||||||
|
expect(parserFnConstructor(hash)).not.toThrow();
|
||||||
|
|
||||||
const tasks = parser.yy.getTasks();
|
const tasks = parser.yy.getTasks();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user