Crate gml_parser

Source
Expand description

This crate allows for reading Graph Modeling Language (GML) files.

This crate first parses the GML into GMLObjects and GMLValues. Then the root GMLObject can be transformed into a Graph containing Nodes and Edges.

§Examples

use gml_parser::{GMLObject, Graph};

let data = r#"
graph [            
   id 4           
   node [         
       id 0       
   ]              
   node [         
       id 1       
   ]              
   edge [         
       source 1   
       target 0   
       label "Edge"
   ]              
]"#;
let root = GMLObject::from_str(data).unwrap();
let graph = Graph::from_gml(root).unwrap();
assert_eq!(graph.id, Some(4));
assert_eq!(graph.nodes.len(), 2);
assert_eq!(graph.edges.len(), 1);

§Limitations

  • This implementation can be fragile and GML is not a very picky standard
  • We duplicate the data when parsing which can have performance impacts on very large graphs

Structs§

Edge
GMLError
GMLObject
Graph
Node

Enums§

GMLValue
Rule

Traits§

HasGMLAttributes
ReadableGMLAttributes