graphviz-builder/lib/Element.ts

37 lines
814 B
TypeScript
Raw Normal View History

2020-04-24 12:02:32 +02:00
export class Element {
2020-04-29 22:19:08 +02:00
private _name = '';
2020-04-24 14:05:58 +02:00
protected parent_name: string;
2020-04-24 12:02:32 +02:00
public get full_name (): string {
2020-04-24 14:05:58 +02:00
if (this.parent_name)
return `${this.parent_name}_${this.name}`;
2020-04-24 12:21:26 +02:00
return this.name;
2020-04-24 12:02:32 +02:00
}
2020-04-29 22:19:08 +02:00
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 === '')
2020-05-06 11:05:34 +02:00
throw new Error (`invalid node name ${val}`);
2020-04-29 22:19:08 +02:00
this._name = new_name;
}
2020-04-24 14:05:58 +02:00
public get parent (): string {
return this.parent_name;
}
2020-04-24 12:02:32 +02:00
public constructor (name: string, parent = '') {
this.name = name;
2020-04-24 14:05:58 +02:00
this.parent_name = parent;
2020-04-24 12:02:32 +02:00
}
// eslint-disable-next-line @typescript-eslint/naming-convention
public toString (): string {
return this.full_name;
}
}