1
- using . EzXML
1
+ module GraphIOGraphMLExt
2
+
3
+ using Graphs
4
+ import Graphs: loadgraph, loadgraphs, savegraph
5
+
6
+ @static if isdefined (Base, :get_extension )
7
+ using GraphIO
8
+ using EzXML
9
+ import GraphIO. GraphML. GraphMLFormat
10
+ else
11
+ using .. GraphIO
12
+ using .. EzXML
13
+ import .. GraphIO. GraphML. GraphMLFormat
14
+ end
15
+
2
16
3
17
function _graphml_read_one_graph (reader:: EzXML.StreamReader , isdirected:: Bool )
4
18
nodes = Dict {String,Int} ()
5
- xedges = Vector {Graphs. Edge} ()
19
+ xedges = Vector {Edge} ()
6
20
nodeid = 1
7
21
for typ in reader
8
22
if typ == EzXML. READER_ELEMENT
@@ -13,13 +27,13 @@ function _graphml_read_one_graph(reader::EzXML.StreamReader, isdirected::Bool)
13
27
elseif elname == " edge"
14
28
src = reader[" source" ]
15
29
tar = reader[" target" ]
16
- push! (xedges, Graphs . Edge (nodes[src], nodes[tar]))
30
+ push! (xedges, Edge (nodes[src], nodes[tar]))
17
31
else
18
32
@warn " Skipping unknown node '$(elname) ' - further warnings will be suppressed" maxlog= 1 _id= :unknode
19
33
end
20
34
end
21
35
end
22
- g = (isdirected ? Graphs . DiGraph : Graphs . Graph)(length (nodes))
36
+ g = (isdirected ? DiGraph : Graph)(length (nodes))
23
37
for edge in xedges
24
38
add_edge! (g, edge)
25
39
end
58
72
59
73
function loadgraphml_mult (io:: IO )
60
74
reader = EzXML. StreamReader (io)
61
- graphs = Dict {String,Graphs. AbstractGraph} ()
75
+ graphs = Dict {String,AbstractGraph} ()
62
76
for typ in reader
63
77
if typ == EzXML. READER_ELEMENT
64
78
elname = EzXML. nodename (reader)
@@ -101,7 +115,7 @@ function savegraphml_mult(io::IO, graphs::Dict)
101
115
end
102
116
103
117
m = 0
104
- for e in Graphs . edges (g)
118
+ for e in edges (g)
105
119
xe = addelement! (xg, " edge" )
106
120
xe[" id" ] = " e$m "
107
121
xe[" source" ] = " n$(src (e)- 1 ) "
@@ -113,11 +127,13 @@ function savegraphml_mult(io::IO, graphs::Dict)
113
127
return length (graphs)
114
128
end
115
129
116
- savegraphml (io:: IO , g:: Graphs. AbstractGraph , gname:: String ) =
130
+ savegraphml (io:: IO , g:: AbstractGraph , gname:: String ) =
117
131
savegraphml_mult (io, Dict (gname => g))
118
132
119
133
120
134
loadgraph (io:: IO , gname:: String , :: GraphMLFormat ) = loadgraphml (io, gname)
121
135
loadgraphs (io:: IO , :: GraphMLFormat ) = loadgraphml_mult (io)
122
136
savegraph (io:: IO , g:: AbstractGraph , gname:: String , :: GraphMLFormat ) = savegraphml (io, g, gname)
123
137
savegraph (io:: IO , d:: Dict , :: GraphMLFormat ) = savegraphml_mult (io, d)
138
+
139
+ end
0 commit comments