Class: Pione::PNML::Reader
- Inherits:
-
Object
- Object
- Pione::PNML::Reader
- Defined in:
- lib/pione/pnml/reader.rb
Class Method Summary collapse
-
.read(location) ⇒ Object
Read a PNML file at the location and return
PNML::Net
.
Instance Method Summary collapse
- #find_arcs(doc, net) ⇒ Object
- #find_places(doc, net) ⇒ Object
-
#find_transitions(doc, net) ⇒ Object
Find all transtions in the document.
-
#initialize(src) ⇒ Reader
constructor
A new instance of Reader.
- #read ⇒ Object
Constructor Details
#initialize(src) ⇒ Reader
Returns a new instance of Reader.
12 13 14 |
# File 'lib/pione/pnml/reader.rb', line 12 def initialize(src) @doc = REXML::Document.new(src) end |
Class Method Details
.read(location) ⇒ Object
Read a PNML file at the location and return PNML::Net
.
8 9 10 |
# File 'lib/pione/pnml/reader.rb', line 8 def self.read(location) new(location.read).read end |
Instance Method Details
#find_arcs(doc, net) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/pione/pnml/reader.rb', line 41 def find_arcs(doc, net) REXML::XPath.match(doc, "/pnml/net/arc").map do |elt| id = elt.attribute("id").value source_id = elt.attribute("source").value # source place(data) id target_id = elt.attribute("target").value # target transition(rule) id Arc.new(net, id, source_id, target_id) end end |
#find_places(doc, net) ⇒ Object
33 34 35 36 37 38 39 |
# File 'lib/pione/pnml/reader.rb', line 33 def find_places(doc, net) REXML::XPath.match(doc, "/pnml/net/place").map do |elt| id = elt.attribute("id").value name = REXML::XPath.first(elt, "name/text").texts.map{|text| text.value}.join("") Place.new(net, id, name) end end |
#find_transitions(doc, net) ⇒ Object
Find all transtions in the document.
25 26 27 28 29 30 31 |
# File 'lib/pione/pnml/reader.rb', line 25 def find_transitions(doc, net) REXML::XPath.match(doc, "/pnml/net/transition").map do |elt| id = elt.attribute("id").value name = REXML::XPath.first(elt, "name/text").texts.map{|text| text.value}.join("") Transition.new(net, id, name) end end |
#read ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/pione/pnml/reader.rb', line 16 def read Net.new.tap do |net| net.transitions = find_transitions(@doc, net) net.places = find_places(@doc, net) net.arcs = find_arcs(@doc, net) end end |