This commit is contained in:
Timo Hocker
2020-04-17 15:43:34 +02:00
commit 6bf85f1605
14 changed files with 3558 additions and 0 deletions

17
lib/.eslintrc.js Normal file
View File

@ -0,0 +1,17 @@
module.exports = {
env: {
commonjs: true,
es6: true,
node: true
},
extends: [
'@scode/eslint-config-ts'
],
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly'
},
parserOptions: {
ecmaVersion: 2018
}
}

9
lib/Edge.ts Normal file
View File

@ -0,0 +1,9 @@
export class Edge {
public origin: string;
public target: string;
// eslint-disable-next-line @typescript-eslint/naming-convention
public toString (): string {
return `${this.origin} -> ${this.target}`;
}
}

23
lib/Graph.ts Normal file
View File

@ -0,0 +1,23 @@
import { Node } from './Node';
import { Edge } from './Edge';
export class Graph extends Node {
public children: Array<Graph> = [];
public nodes: Array<GraphNode> = [];
public is_root = false;
public edges: Array<Edge>;
// eslint-disable-next-line @typescript-eslint/naming-convention
public toString (): string {
return `subgraph cluster_${this.full_name} {
${this.children.map ((c) => c.toString ())
.join ('\n')}
${this.nodes.map ((c) => c.toString ())
.join ('\n')}
${this.edges.map ((c) => c.toString ())
.join ('\n')}
}`;
}
}

20
lib/GraphNode.ts Normal file
View File

@ -0,0 +1,20 @@
import { Node } from './Node';
export class GraphNode extends Node {
public label: string;
public is_table: boolean;
public table_contents: Array<Array<string>>;
private get serialized_table (): string {
const mapped_columns = this.table_contents
.map ((val) => `<td>${val.join ('</td><td>')}</td>`);
return `<table><tr>${mapped_columns.join ('</tr><tr>')}</tr></table>`;
}
// eslint-disable-next-line @typescript-eslint/naming-convention
public toString (): string {
return `${this.full_name}[label=<${this.is_table
? this._serialized_table
: this.label}>]`;
}
}

12
lib/Node.ts Normal file
View File

@ -0,0 +1,12 @@
export class Node {
public name;
public parent;
public get full_name (): string {
return `${this.parent}_${this.name}`;
}
// eslint-disable-next-line @typescript-eslint/naming-convention
public toString (): string {
return this.full_name;
}
}

4
lib/index.ts Normal file
View File

@ -0,0 +1,4 @@
export { Graph } from './Graph';
export { GraphNode } from './GraphNode';
export { Node } from './Node';
export { Edge } from './Edge';