mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-02-04 07:13:25 +08:00
Less picky syntax
This commit is contained in:
parent
4aeb2ae9a2
commit
bc546ef562
@ -23,10 +23,53 @@ describe('when parsing directions', function () {
|
|||||||
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
||||||
expect(data4Layout.nodes[0].label).toEqual('D');
|
expect(data4Layout.nodes[0].label).toEqual('D');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should no matter of there are no leading spaces', function () {
|
||||||
|
const res = flow.parser.parse(`flowchart TB
|
||||||
|
D@{shape: rounded }@`);
|
||||||
|
|
||||||
|
const data4Layout = flow.parser.yy.getData();
|
||||||
|
console.log(data4Layout.nodes);
|
||||||
|
expect(data4Layout.nodes.length).toBe(1);
|
||||||
|
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
||||||
|
expect(data4Layout.nodes[0].label).toEqual('D');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should no matter of there are many leading spaces', function () {
|
||||||
|
const res = flow.parser.parse(`flowchart TB
|
||||||
|
D@{ shape: rounded }@`);
|
||||||
|
|
||||||
|
const data4Layout = flow.parser.yy.getData();
|
||||||
|
console.log(data4Layout.nodes);
|
||||||
|
expect(data4Layout.nodes.length).toBe(1);
|
||||||
|
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
||||||
|
expect(data4Layout.nodes[0].label).toEqual('D');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be forgiving with many spaces before teh end', function () {
|
||||||
|
const res = flow.parser.parse(`flowchart TB
|
||||||
|
D@{ shape: rounded }@`);
|
||||||
|
|
||||||
|
const data4Layout = flow.parser.yy.getData();
|
||||||
|
console.log(data4Layout.nodes);
|
||||||
|
expect(data4Layout.nodes.length).toBe(1);
|
||||||
|
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
||||||
|
expect(data4Layout.nodes[0].label).toEqual('D');
|
||||||
|
});
|
||||||
|
it('should be possible to add multiple properties on the same line', function () {
|
||||||
|
const res = flow.parser.parse(`flowchart TB
|
||||||
|
D@{ shape: rounded , label: "DD" }@`);
|
||||||
|
|
||||||
|
const data4Layout = flow.parser.yy.getData();
|
||||||
|
console.log(data4Layout.nodes);
|
||||||
|
expect(data4Layout.nodes.length).toBe(1);
|
||||||
|
expect(data4Layout.nodes[0].shape).toEqual('rounded');
|
||||||
|
expect(data4Layout.nodes[0].label).toEqual('DD');
|
||||||
|
});
|
||||||
it('should be possible to link to a node with more data', function () {
|
it('should be possible to link to a node with more data', function () {
|
||||||
const res = flow.parser.parse(`flowchart TB
|
const res = flow.parser.parse(`flowchart TB
|
||||||
A --> D@{
|
A --> D@{
|
||||||
shape: circle,
|
shape: circle
|
||||||
icon: "clock"
|
icon: "clock"
|
||||||
}@
|
}@
|
||||||
|
|
||||||
@ -46,11 +89,11 @@ describe('when parsing directions', function () {
|
|||||||
const res = flow.parser.parse(`flowchart TB
|
const res = flow.parser.parse(`flowchart TB
|
||||||
A[hello]
|
A[hello]
|
||||||
B@{
|
B@{
|
||||||
shape: circle,
|
shape: circle
|
||||||
icon: "clock"
|
icon: "clock"
|
||||||
}@
|
}@
|
||||||
C[Hello]@{
|
C[Hello]@{
|
||||||
shape: circle,
|
shape: circle
|
||||||
icon: "clock"
|
icon: "clock"
|
||||||
}@
|
}@
|
||||||
`);
|
`);
|
||||||
@ -67,7 +110,7 @@ describe('when parsing directions', function () {
|
|||||||
it('should use handle bracket end (}) character inside the shape data', function () {
|
it('should use handle bracket end (}) character inside the shape data', function () {
|
||||||
const res = flow.parser.parse(`flowchart TB
|
const res = flow.parser.parse(`flowchart TB
|
||||||
A@{
|
A@{
|
||||||
label: "This is }",
|
label: "This is }"
|
||||||
icon: "clock"
|
icon: "clock"
|
||||||
}@
|
}@
|
||||||
`);
|
`);
|
||||||
@ -88,4 +131,19 @@ describe('when parsing directions', function () {
|
|||||||
expect(data4Layout.nodes[0].shape).toEqual('diamond');
|
expect(data4Layout.nodes[0].shape).toEqual('diamond');
|
||||||
expect(data4Layout.nodes[0].label).toEqual('This is a label');
|
expect(data4Layout.nodes[0].label).toEqual('This is a label');
|
||||||
});
|
});
|
||||||
|
it('Multi line strings should be supported', function () {
|
||||||
|
const res = flow.parser.parse(`flowchart TB
|
||||||
|
A@{
|
||||||
|
label: |
|
||||||
|
"This is a
|
||||||
|
multiline string"
|
||||||
|
icon: "clock"
|
||||||
|
}@
|
||||||
|
`);
|
||||||
|
|
||||||
|
const data4Layout = flow.parser.yy.getData();
|
||||||
|
expect(data4Layout.nodes.length).toBe(1);
|
||||||
|
expect(data4Layout.nodes[0].shape).toEqual('squareRect');
|
||||||
|
expect(data4Layout.nodes[0].label).toEqual('This is a<br/>multiline string');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@ -37,14 +37,10 @@ accDescr\s*"{"\s* { this.begin("acc_descr_multilin
|
|||||||
// <acc_descr_multiline>.*[^\n]* { return "acc_descr_line"}
|
// <acc_descr_multiline>.*[^\n]* { return "acc_descr_line"}
|
||||||
|
|
||||||
\@\{ { console.log('Pushing state shapeData!'); this.pushState("shapeData"); }
|
\@\{ { console.log('Pushing state shapeData!'); this.pushState("shapeData"); }
|
||||||
<shapeData>[^}] { console.log('End bracket found: ', yytext); this.pushState("shapeDataEndBracket");}
|
|
||||||
<shapeDataEndBracket>[@] { console.log('This is the end: ', yytext); this.popState();this.popState(); }
|
<shapeDataEndBracket>[@] { console.log('This is the end: ', yytext); this.popState();this.popState(); }
|
||||||
<shapeDataEndBracket>[^@]* { console.log('something else: ', yytext); return 'SHAPE_DATA'; }
|
<shapeDataEndBracket>[^@]* { console.log('SHAPE_DATA: ', yytext); return 'SHAPE_DATA'; }
|
||||||
<shapeData>([^}^@])+ { console.log('Parsed data: ', yytext); }
|
<shapeData>@ { console.log('End bracket found: ', yytext); this.pushState("shapeDataEndBracket");}
|
||||||
|
|
||||||
// [@\{] {this.pushState("shapeData");}
|
|
||||||
// <shapeData>[\}][\@] { console.log('This is the end: ', yytext);this.popState(); }
|
|
||||||
// <shapeData>^(?!.*\}@).* { console.log('Parsed data: ', yytext); return 'SHAPE_DATA';}
|
|
||||||
/*
|
/*
|
||||||
---interactivity command---
|
---interactivity command---
|
||||||
'call' adds a callback to the specified node. 'call' can only be specified when
|
'call' adds a callback to the specified node. 'call' can only be specified when
|
||||||
|
Loading…
x
Reference in New Issue
Block a user