Graphviz library for Deno🦕
Runtime independent APIs and specifications are compatible with the ts-graphviz package.
renderDot
function outputs the dot command execution result to the specified
path by supplying diagram object.
renderDot
function requiresallow-write
,allow-run
permission, and dot command.
import * as path from "https://deno.land/std@0.67.0/path/mod.ts";
import {
attribute,
digraph,
renderDot,
} from "https://deno.land/x/graphviz/mod.ts";
const G = digraph("G", (g) => {
const a = g.node("aa");
const b = g.node("bb");
const c = g.node("cc");
g.edge([a, b, c], {
[attribute.color]: "red",
});
g.subgraph("A", (A) => {
const Aa = A.node("Aaa", {
[attribute.color]: "pink",
});
const Ab = A.node("Abb", {
[attribute.color]: "violet",
});
const Ac = A.node("Acc");
A.edge([Aa.port({ compass: "c" }), Ab, Ac, "E"], {
[attribute.color]: "red",
});
});
});
const __dirname = new URL(".", import.meta.url).pathname;
await renderDot(G, path.resolve(__dirname, "./example.svg"), {
format: "svg",
});
The https://deno.land/x/graphviz/perser/mod.ts
provide parse
function that
parses a string written in dot language and convert it to a model.
The return value is a Graph or Digraph that inherits from RootCluster.
import { parse } from "https://deno.land/x/graphviz/perser/mod.ts";
const G = parse(`
digraph G {
a -> b;
}
`);
This is equivalent to the code below.
import { digraph } from "https://deno.land/x/graphviz/mod.ts";
const G = digraph("G", (g) => {
g.edge(["a", "b"]);
});
The "https://deno.land/x/graphviz/mod.ts"
module also provides other features
such as handling AST.
This module is a translation of @ts-graphviz/parser to work with the Deno runtime.
Please refer to the repository for details of the provided API.
This software is released under the MIT License, see LICENSE.