Updated classdiagrams with the new syntax
This commit is contained in:
parent
85e157f0d3
commit
5e6b4d73e1
|
@ -4,6 +4,13 @@ import * as configApi from '../../config';
|
||||||
import common from '../common/common';
|
import common from '../common/common';
|
||||||
import utils from '../../utils';
|
import utils from '../../utils';
|
||||||
import mermaidAPI from '../../mermaidAPI';
|
import mermaidAPI from '../../mermaidAPI';
|
||||||
|
import {
|
||||||
|
setTitle,
|
||||||
|
getTitle,
|
||||||
|
getAccDescription,
|
||||||
|
setAccDescription,
|
||||||
|
clear as commonClear,
|
||||||
|
} from '../../commonDb';
|
||||||
|
|
||||||
const MERMAID_DOM_ID_PREFIX = 'classid-';
|
const MERMAID_DOM_ID_PREFIX = 'classid-';
|
||||||
|
|
||||||
|
@ -77,6 +84,7 @@ export const clear = function () {
|
||||||
classes = {};
|
classes = {};
|
||||||
funs = [];
|
funs = [];
|
||||||
funs.push(setupToolTips);
|
funs.push(setupToolTips);
|
||||||
|
commonClear();
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getClass = function (id) {
|
export const getClass = function (id) {
|
||||||
|
@ -134,6 +142,7 @@ export const addAnnotation = function (className, annotation) {
|
||||||
* @public
|
* @public
|
||||||
*/
|
*/
|
||||||
export const addMember = function (className, member) {
|
export const addMember = function (className, member) {
|
||||||
|
console.log(className, member);
|
||||||
const validatedClassName = splitClassNameAndType(className).className;
|
const validatedClassName = splitClassNameAndType(className).className;
|
||||||
const theClass = classes[validatedClassName];
|
const theClass = classes[validatedClassName];
|
||||||
|
|
||||||
|
@ -345,28 +354,6 @@ const setDirection = (dir) => {
|
||||||
direction = dir;
|
direction = dir;
|
||||||
};
|
};
|
||||||
|
|
||||||
let title = '';
|
|
||||||
|
|
||||||
export const setTitle = function (txt) {
|
|
||||||
let sanitizedText = sanitizeText(txt, configApi.getConfig());
|
|
||||||
title = sanitizedText;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getTitle = function () {
|
|
||||||
return title;
|
|
||||||
};
|
|
||||||
|
|
||||||
let accDescription = '';
|
|
||||||
|
|
||||||
export const setAccDescription = function (txt) {
|
|
||||||
let sanitizedText = sanitizeText(txt, configApi.getConfig());
|
|
||||||
accDescription = sanitizedText;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getAccDescription = function () {
|
|
||||||
return accDescription;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
parseDirective,
|
parseDirective,
|
||||||
setTitle,
|
setTitle,
|
||||||
|
|
|
@ -543,20 +543,33 @@ foo()
|
||||||
expect(relations[0].relation.lineType).toBe(classDb.lineType.LINE);
|
expect(relations[0].relation.lineType).toBe(classDb.lineType.LINE);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should have a title and accDescription', function () {
|
it('should handle accTitle and accDescr', function () {
|
||||||
const str =
|
const str = `classDiagram
|
||||||
'classDiagram\n' +
|
accTitle: My Title
|
||||||
'class Car~T~\n' +
|
accDescr: My Description
|
||||||
'title My Title\n' +
|
|
||||||
'accDescription My Description\n';
|
Class01 <|-- Class02
|
||||||
'Car : -List~Wheel~ wheels\n' +
|
`;
|
||||||
'Car : +setWheels(List~Wheel~ wheels)\n' +
|
|
||||||
'Car : +getWheels() List~Wheel~';
|
|
||||||
|
|
||||||
parser.parse(str);
|
parser.parse(str);
|
||||||
expect(parser.yy.getTitle()).toBe('My Title');
|
expect(parser.yy.getTitle()).toBe('My Title');
|
||||||
expect(parser.yy.getAccDescription()).toBe('My Description');
|
expect(parser.yy.getAccDescription()).toBe('My Description');
|
||||||
});
|
});
|
||||||
|
it('should handle accTitle and multiline accDescr', function () {
|
||||||
|
const str = `classDiagram
|
||||||
|
accTitle: My Title
|
||||||
|
accDescr {
|
||||||
|
This is mu multi
|
||||||
|
line description
|
||||||
|
}
|
||||||
|
|
||||||
|
Class01 <|-- Class02
|
||||||
|
`;
|
||||||
|
|
||||||
|
parser.parse(str);
|
||||||
|
expect(parser.yy.getTitle()).toBe('My Title');
|
||||||
|
expect(parser.yy.getAccDescription()).toBe('This is mu multi\nline description');
|
||||||
|
});
|
||||||
|
|
||||||
it('should handle relation definitions AGGREGATION and dotted line', function () {
|
it('should handle relation definitions AGGREGATION and dotted line', function () {
|
||||||
const str = 'classDiagram\n' + 'Class01 o.. Class02';
|
const str = 'classDiagram\n' + 'Class01 o.. Class02';
|
||||||
|
|
|
@ -16,7 +16,9 @@
|
||||||
%x open_directive
|
%x open_directive
|
||||||
%x type_directive
|
%x type_directive
|
||||||
%x arg_directive
|
%x arg_directive
|
||||||
|
%x acc_title
|
||||||
|
%x acc_descr
|
||||||
|
%x acc_descr_multiline
|
||||||
%%
|
%%
|
||||||
\%\%\{ { this.begin('open_directive'); return 'open_directive'; }
|
\%\%\{ { this.begin('open_directive'); return 'open_directive'; }
|
||||||
.*direction\s+TB[^\n]* return 'direction_tb';
|
.*direction\s+TB[^\n]* return 'direction_tb';
|
||||||
|
@ -29,8 +31,13 @@
|
||||||
<arg_directive>((?:(?!\}\%\%).|\n)*) return 'arg_directive';
|
<arg_directive>((?:(?!\}\%\%).|\n)*) return 'arg_directive';
|
||||||
\%\%(?!\{)*[^\n]*(\r?\n?)+ /* skip comments */
|
\%\%(?!\{)*[^\n]*(\r?\n?)+ /* skip comments */
|
||||||
\%\%[^\n]*(\r?\n)* /* skip comments */
|
\%\%[^\n]*(\r?\n)* /* skip comments */
|
||||||
"title"\s[^#\n;]+ return 'title';
|
accTitle\s*":"\s* { this.begin("acc_title");return 'acc_title'; }
|
||||||
"accDescription"\s[^#\n;]+ return 'accDescription';
|
<acc_title>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_title_value"; }
|
||||||
|
accDescr\s*":"\s* { this.begin("acc_descr");return 'acc_descr'; }
|
||||||
|
<acc_descr>(?!\n|;|#)*[^\n]* { this.popState(); return "acc_descr_value"; }
|
||||||
|
accDescr\s*"{"\s* { this.begin("acc_descr_multiline");}
|
||||||
|
<acc_descr_multiline>[\}] { this.popState(); }
|
||||||
|
<acc_descr_multiline>[^\}]* return "acc_descr_multiline_value";
|
||||||
|
|
||||||
\s*(\r?\n)+ return 'NEWLINE';
|
\s*(\r?\n)+ return 'NEWLINE';
|
||||||
\s+ /* skip whitespace */
|
\s+ /* skip whitespace */
|
||||||
|
@ -256,9 +263,9 @@ statement
|
||||||
| cssClassStatement
|
| cssClassStatement
|
||||||
| directive
|
| directive
|
||||||
| direction
|
| direction
|
||||||
| title {yy.setTitle($1.substring(6));$$=$1.substring(6);}
|
| acc_title acc_title_value { console.log('acc_title');$$=$2.trim();yy.setTitle($$); }
|
||||||
| accDescription {yy.setAccDescription($1.substring(15));$$=$1.substring(15);}
|
| acc_descr acc_descr_value { console.log('acc_descr');$$=$2.trim();yy.setAccDescription($$); }
|
||||||
|
| acc_descr_multiline_value { console.log('acc_descr_multiline_value');$$=$1.trim();yy.setAccDescription($$); }
|
||||||
;
|
;
|
||||||
|
|
||||||
classStatement
|
classStatement
|
||||||
|
|
Loading…
Reference in New Issue