Compare commits

...

2 Commits

Author SHA1 Message Date
84bda96276 Merge branch 'master' of git.scode.ovh:timo/graphviz-builder 2020-04-29 22:22:42 +02:00
1c6af8fa9d fix 2020-04-29 22:19:08 +02:00
2 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,5 @@
export class Element { export class Element {
public name: string; private _name = '';
protected parent_name: string; protected parent_name: string;
public get full_name (): string { public get full_name (): string {
@ -8,15 +8,30 @@ export class Element {
return this.name; return this.name;
} }
public get name (): string {
return this._name;
}
public set name (val: string) {
const new_name = val.replace (/[^a-z0-9]/giu, '')
.replace (/^[0-9]+/iu, '');
if (new_name === '')
throw new Error ('invalid name specified');
this._name = new_name;
}
public get parent (): string { public get parent (): string {
return this.parent_name; return this.parent_name;
} }
public constructor (name: string, parent = '') { public constructor (name: string, parent = '') {
<<<<<<< HEAD
=======
const regex = /^[a-z_][a-z_0-9]+$/iu; const regex = /^[a-z_][a-z_0-9]+$/iu;
if (!regex.test (name)) if (!regex.test (name))
throw new Error ('invalid name specified'); throw new Error ('invalid name specified');
>>>>>>> f553396eee29e1e0820624345e5d23dc3471a4a4
this.name = name; this.name = name;
this.parent_name = parent; this.parent_name = parent;
} }

View File

@ -53,9 +53,23 @@ test ('serialize table', (t) => {
}); });
test ('adhere to naming convention', (t) => { test ('adhere to naming convention', (t) => {
const n = new Node ('invalid.name', 'parent');
t.is (n.name, 'invalidname');
});
test ('throw on invalid name', (t) => {
t.throws (() => { t.throws (() => {
<<<<<<< HEAD
const n = new Node ('564#+-.,/@', 'parent');
=======
const n = new Node ('invalid.name', 'parent'); const n = new Node ('invalid.name', 'parent');
>>>>>>> f553396eee29e1e0820624345e5d23dc3471a4a4
return n.toString (); return n.toString ();
}, { message: 'invalid name specified' }); }, { message: 'invalid name specified' });
}); });
test ('leave numbers after the first letter', (t) => {
const n = new Node ('i123nvalid.name', 'parent');
t.is (n.name, 'i123nvalidname');
});