11module DOT
22
33using GraphIO. ParserCombinator. Parsers
4- using LightGraphs
5- using LightGraphs : AbstractGraphFormat
4+ using Graphs
5+ using Graphs : AbstractGraphFormat
66
7- import LightGraphs : loadgraph, loadgraphs, savegraph
7+ import Graphs : loadgraph, loadgraphs, savegraph
88
99export DOTFormat
1010
1111struct DOTFormat <: AbstractGraphFormat end
1212
13- function savedot (io:: IO , g:: LightGraphs .AbstractGraph , gname:: String = " " )
14- isdir = LightGraphs . is_directed (g)
13+ function savedot (io:: IO , g:: Graphs .AbstractGraph , gname:: String = " " )
14+ isdir = Graphs . is_directed (g)
1515 println (io,(isdir ? " digraph " : " graph " ) * gname * " {" )
16- for i in LightGraphs . vertices (g)
16+ for i in Graphs . vertices (g)
1717 println (io," \t " * string (i))
1818 end
1919 if isdir
20- for u in LightGraphs . vertices (g)
21- out_nbrs = LightGraphs . outneighbors (g, u)
20+ for u in Graphs . vertices (g)
21+ out_nbrs = Graphs . outneighbors (g, u)
2222 length (out_nbrs) == 0 && continue
2323 println (io, " \t " * string (u) * " -> {" * join (out_nbrs,' ,' ) * " }" )
2424 end
2525 else
26- for e in LightGraphs . edges (g)
27- source = string (LightGraphs . src (e))
28- dest = string (LightGraphs . dst (e))
26+ for e in Graphs . edges (g)
27+ source = string (Graphs . src (e))
28+ dest = string (Graphs . dst (e))
2929 println (io, " \t " * source * " -- " * dest)
3030 end
3131 end
@@ -46,9 +46,9 @@ function _dot_read_one_graph(pg::Parsers.DOT.Graph)
4646 nvg = length (Parsers. DOT. nodes (pg))
4747 nodedict = Dict (zip (collect (Parsers. DOT. nodes (pg)), 1 : nvg))
4848 if isdir
49- g = LightGraphs . DiGraph (nvg)
49+ g = Graphs . DiGraph (nvg)
5050 else
51- g = LightGraphs . Graph (nvg)
51+ g = Graphs . Graph (nvg)
5252 end
5353 for es in Parsers. DOT. edges (pg)
5454 s = nodedict[es[1 ]]
@@ -58,27 +58,24 @@ function _dot_read_one_graph(pg::Parsers.DOT.Graph)
5858 return g
5959end
6060
61+ _name (pg:: Parsers.DOT.Graph ) =
62+ pg. id != = nothing ? pg. id. id :
63+ Parsers. DOT. StringID (pg. directed ? " digraph" : " graph" )
64+
6165function loaddot (io:: IO , gname:: String )
6266 p = Parsers. DOT. parse_dot (read (io, String))
6367 for pg in p
64- isdir = pg. directed
65- possname = isdir ? Parsers. DOT. StringID (" digraph" ) : Parsers. DOT. StringID (" graph" )
66- name = get (pg. id, possname). id
67- name == gname && return _dot_read_one_graph (pg)
68+ _name (pg) == gname && return _dot_read_one_graph (pg)
6869 end
6970 error (" Graph $gname not found" )
7071end
7172
7273function loaddot_mult (io:: IO )
7374 p = Parsers. DOT. parse_dot (read (io, String))
74-
7575 graphs = Dict {String,AbstractGraph} ()
7676
7777 for pg in p
78- isdir = pg. directed
79- possname = isdir ? Parsers. DOT. StringID (" digraph" ) : Parsers. DOT. StringID (" graph" )
80- name = get (pg. id, possname). id
81- graphs[name] = _dot_read_one_graph (pg)
78+ graphs[_name (pg)] = _dot_read_one_graph (pg)
8279 end
8380 return graphs
8481end
0 commit comments