Crate dot_generator

Source
Expand description

§The set of macroses helping to generate the elements of graphviz

The set helps to generate the major components of the graphviz dot notation endevouring to follow comparatively close to the language notation

§Description:

In overall, the format of macros is the following one:

  • name or id or any other markers
  • list of vec with a prefix , or seq of elems with a prefix ;

#Note:

  • for the list of items the way to pass vec is the following one: element(.. , vec of items)
  • for the seq of items the way to pass several items is the following one: element(.. ; items+)

§Examples:

       fn graph_test() {
       use dot_generator::*;
       use dot_structures::*;

       let g = r#"
       strict digraph t {
           aa[color=green]
           subgraph v {
               aa[shape=square]
               subgraph vv{a2 -> b2}
               aaa[color=red]
               aaa -> bbb
           }
           aa -> be -> subgraph v { d -> aaa}
           aa -> aaa -> v
       }
       "#;

           graph!(strict di id!("t");
             node!("aa";attr!("color","green")),
             subgraph!("v";
               node!("aa"; attr!("shape","square")),
               subgraph!("vv"; edge!(node_id!("a2") => node_id!("b2"))),
               node!("aaa";attr!("color","red")),
               edge!(node_id!("aaa") => node_id!("bbb"))
               ),
             edge!(node_id!("aa") => node_id!("be") => subgraph!("v"; edge!(node_id!("d") => node_id!("aaa")))),
             edge!(node_id!("aa") => node_id!("aaa") => node_id!("v"))
           );
   }

Macros§

attr
represents an attribute in dot lang.
edge
represents an edge in dot lang. #Example:
graph
represents a graph in dot lang.
id
represents an id for node or subgraph in dot lang. #Arguments:
node
represents a node in dot lang. #Example:
node_id
represents a node id in dot lang Essentially it is a combination of id and port
port
represents a port in dot lang
stmt
represents an element of graph or subgraph which is, in turn, just a wrapper for the underlying structure as node,edge, subgraph etc. #Example:
subgraph
represents a subgraph in dot lang. #Example: