diff options
-rw-r--r-- | README.md | 46 | ||||
-rw-r--r-- | example.dot | 5 | ||||
-rw-r--r-- | readme-example.png | bin | 0 -> 3671 bytes |
3 files changed, 42 insertions, 9 deletions
@@ -1,17 +1,45 @@ # Dotavious -A library for generating Graphviz DOT language files for graphs. +[![crates.io](https://meritbadge.herokuapp.com/dotavious)](https://crates.io/crates/dotavious) +[![Released API docs](https://docs.rs/dotavious/badge.svg)](https://docs.rs/dotavious) +[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) +[![CI](https://github.com/doctavious/dotavious/workflows/CI/badge.svg)](https://github.com/doctavious/dotavious/actions?query=workflow%3ACI) +A library for generating [Graphviz](https://graphviz.org/) [DOT](https://graphviz.org/doc/info/lang.html) language files +for visualizing graphs. -## Research +## Constraints / Limitations -- https://github.com/HongxuChen/dot-rs/blob/master/src/lib.rs -- https://github.com/lk-chen/dot_parse-rust -- https://github.com/dylanowen/mdbook-graphviz -- https://github.com/petgraph/petgraph/blob/master/src/dot.rs +- Not every Attribute is fully documented/described. + However, all those which have specific allowed values should be covered. +- Deprecated Attributes are not defined. -I'm not in love with this API design. Will work on building an alternative and see how it goes -Read https://graphviz.org/doc/info/lang.html +## Quickstart -https://www.graphviz.org/pdf/dotguide.pdf
\ No newline at end of file +```rust +use dotavious::{Dot, Edge, Graph, GraphBuilder, Node}; +use std::io; +use std::io::Read; + +// can also start building a undirected graph via `GraphBuilder::new_undirected` +let graph = GraphBuilder::new_directed(Some("example".to_string())) + .add_node(Node::new("N0".to_string())) + .add_node(Node::new("N1".to_string())) + .add_edge(Edge::new("N0".to_string(), "N1".to_string())) + .build() + .unwrap(); + +let dot = Dot { graph }; +println!("{}", dot); +``` +which produces +``` +digraph example { + N0; + N1; + N0 -> N1; +} +``` +and when rendered will look like +![README example rendered](readme-example.png?raw=true) diff --git a/example.dot b/example.dot new file mode 100644 index 0000000..53a536a --- /dev/null +++ b/example.dot @@ -0,0 +1,5 @@ +digraph example { + N0; + N1; + N0 -> N1; +} diff --git a/readme-example.png b/readme-example.png Binary files differnew file mode 100644 index 0000000..63d3c28 --- /dev/null +++ b/readme-example.png |