lib/rgl/graphxml.rb in rgl-0.2.2 vs lib/rgl/graphxml.rb in rgl-0.2.3

- old
+ new

@@ -1,52 +1,63 @@ +# graphxml.rb +# # This file contains minimal support for creating RGL graphs from the GraphML -# format (see http://www.graphdrawing.org/graphml). The main purpose is to +# format (see http://www.graphdrawing.org/graphml). The main purpose is to # have a rich set of example graphs to have some more tests. # -# See the examples directory which contains a subdirectory _north_ with the -# Graph catalog GraphViz (see http://www.research.att.com/sw/tools/graphviz/refs.html). +# See the examples directory, which contains a subdirectory _north_ with the +# Graph catalog GraphViz (see +# http://www.research.att.com/sw/tools/graphviz/refs.html). # # We use REXML::StreamListener from the REXML library # (http://www.germane-software.com/software/rexml) to parse the grapml files. require 'rgl/mutable' require 'rexml/document' require 'rexml/streamlistener' module RGL - # Module GraphXML adds to each class including module MutableGraph a class + + # Module GraphXML adds to each class, including module MutableGraph, a class # method from_graphxml. # - # Attention: Because append_features is used to provide the - # functionality GraphXML must be loaded before the concrete class - # implementing including MutableGraph is loaded. + # Attention: Because append_features is used to provide the functionality, + # GraphXML must be loaded before the concrete class including MutableGraph + # is loaded. + module GraphXML - class MutableGraphParser - include REXML::StreamListener - attr_reader :graph - def initialize(graph) - @graph = graph - end - def tag_start(name, attrs) - case name - when 'edge' - @graph.add_edge(attrs['source'], - attrs['target']) - when 'node' - @graph.add_vertex(attrs['id']) - end - end - end - - def MutableGraph.append_features(includingClass) - super + class MutableGraphParser - # Create a new MutableGraph from the XML-Source _source_. - def includingClass.from_graphxml (source) - listener = MutableGraphParser.new(self.new) - REXML::Document.parse_stream(source, listener) - listener.graph - end - end - end -end + include REXML::StreamListener + + attr_reader :graph + + def initialize (graph) + @graph = graph + end + + def tag_start (name, attrs) + case name + when 'edge' + @graph.add_edge(attrs['source'], attrs['target']) + when 'node' + @graph.add_vertex(attrs['id']) + end + end + + end # class MutableGraphParser + + def MutableGraph.append_features (includingClass) + super + + # Create a new MutableGraph from the XML-Source _source_. + + def includingClass.from_graphxml (source) + listener = MutableGraphParser.new(self.new) + REXML::Document.parse_stream(source, listener) + listener.graph + end + end + + end # module GraphXML +end # module RGL