From e45dc721cd7badb59ffcaceb6bd739b01210112f Mon Sep 17 00:00:00 2001 From: seancarroll Date: Mon, 22 Mar 2021 20:06:41 -0500 Subject: add quickstart example to readme. include badges in readme --- README.md | 46 +++++++++++++++++++++++++++++++++++++--------- example.dot | 5 +++++ readme-example.png | Bin 0 -> 3671 bytes 3 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 example.dot create mode 100644 readme-example.png diff --git a/README.md b/README.md index 329ad72..a8327b9 100644 --- a/README.md +++ b/README.md @@ -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 new file mode 100644 index 0000000..63d3c28 Binary files /dev/null and b/readme-example.png differ -- cgit v1.2.3