mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-01-28 07:03:17 +08:00
Fix classParser
This commit is contained in:
parent
d125d22488
commit
24f5a15f20
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mermaid",
|
"name": "mermaid",
|
||||||
"version": "10.2.0",
|
"version": "10.2.0-rc.1",
|
||||||
"description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
"description": "Markdown-ish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"module": "./dist/mermaid.core.mjs",
|
"module": "./dist/mermaid.core.mjs",
|
||||||
|
78
packages/mermaid/src/diagrams/class/classParser.spec.ts
Normal file
78
packages/mermaid/src/diagrams/class/classParser.spec.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
import { setConfig } from '../../config.js';
|
||||||
|
import classDB from './classDb.js';
|
||||||
|
// @ts-ignore - no types in jison
|
||||||
|
import classDiagram from './parser/classDiagram.jison';
|
||||||
|
|
||||||
|
setConfig({
|
||||||
|
securityLevel: 'strict',
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when parsing class diagram', function () {
|
||||||
|
beforeEach(function () {
|
||||||
|
classDiagram.parser.yy = classDB;
|
||||||
|
classDiagram.parser.yy.clear();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should parse diagram with direction', () => {
|
||||||
|
classDiagram.parser.parse(`classDiagram
|
||||||
|
direction TB
|
||||||
|
class Student {
|
||||||
|
-idCard : IdCard
|
||||||
|
}
|
||||||
|
class IdCard{
|
||||||
|
-id : int
|
||||||
|
-name : string
|
||||||
|
}
|
||||||
|
class Bike{
|
||||||
|
-id : int
|
||||||
|
-name : string
|
||||||
|
}
|
||||||
|
Student "1" --o "1" IdCard : carries
|
||||||
|
Student "1" --o "1" Bike : rides`);
|
||||||
|
|
||||||
|
expect(Object.keys(classDB.getClasses()).length).toBe(3);
|
||||||
|
expect(classDB.getClasses().Student).toMatchInlineSnapshot(`
|
||||||
|
{
|
||||||
|
"annotations": [],
|
||||||
|
"cssClasses": [],
|
||||||
|
"domId": "classId-Student-0",
|
||||||
|
"id": "Student",
|
||||||
|
"label": "Student",
|
||||||
|
"members": [
|
||||||
|
"-idCard : IdCard",
|
||||||
|
],
|
||||||
|
"methods": [],
|
||||||
|
"type": "",
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
expect(classDB.getRelations().length).toBe(2);
|
||||||
|
expect(classDB.getRelations()).toMatchInlineSnapshot(`
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id1": "Student",
|
||||||
|
"id2": "IdCard",
|
||||||
|
"relation": {
|
||||||
|
"lineType": 0,
|
||||||
|
"type1": "none",
|
||||||
|
"type2": 0,
|
||||||
|
},
|
||||||
|
"relationTitle1": "1",
|
||||||
|
"relationTitle2": "1",
|
||||||
|
"title": "carries",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id1": "Student",
|
||||||
|
"id2": "Bike",
|
||||||
|
"relation": {
|
||||||
|
"lineType": 0,
|
||||||
|
"type1": "none",
|
||||||
|
"type2": 0,
|
||||||
|
},
|
||||||
|
"relationTitle1": "1",
|
||||||
|
"relationTitle2": "1",
|
||||||
|
"title": "rides",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`);
|
||||||
|
});
|
||||||
|
});
|
@ -200,7 +200,6 @@ Function arguments are optional: 'call <callback_name>()' simply executes 'callb
|
|||||||
|
|
||||||
start
|
start
|
||||||
: mermaidDoc
|
: mermaidDoc
|
||||||
| direction
|
|
||||||
| directive start
|
| directive start
|
||||||
| statements
|
| statements
|
||||||
;
|
;
|
||||||
@ -272,6 +271,7 @@ statement
|
|||||||
| clickStatement
|
| clickStatement
|
||||||
| cssClassStatement
|
| cssClassStatement
|
||||||
| noteStatement
|
| noteStatement
|
||||||
|
| direction
|
||||||
| acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }
|
| acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }
|
||||||
| acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }
|
| acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }
|
||||||
| acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }
|
| acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user