Class: Petrinet::Net::Builder
- Inherits:
-
Object
- Object
- Petrinet::Net::Builder
- Defined in:
- lib/petrinet/net.rb
Defined Under Namespace
Classes: Transition
Instance Method Summary collapse
-
#initialize ⇒ Builder
constructor
A new instance of Builder.
- #net ⇒ Object
- #transition(transition_name, arcs) ⇒ Object
Constructor Details
#initialize ⇒ Builder
Returns a new instance of Builder.
106 107 108 109 110 |
# File 'lib/petrinet/net.rb', line 106 def initialize @place_names = Set.new @transition_by_name = Hash.new @state_vector = [] end |
Instance Method Details
#net ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/petrinet/net.rb', line 120 def net place_index_by_place_name = Hash.new @place_names.sort.each_with_index do |place_name, index| place_index_by_place_name[place_name] = index end transition_vectors_by_transition_name_pairs = @transition_by_name.map do |transition_name, transition| [transition_name, transition.to_vectors(@place_names.size, place_index_by_place_name)] end transition_vectors_by_transition_name = Hash[transition_vectors_by_transition_name_pairs] Net.new(@state_vector.freeze, place_index_by_place_name.freeze, transition_vectors_by_transition_name.freeze) end |
#transition(transition_name, arcs) ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/petrinet/net.rb', line 112 def transition(transition_name, arcs) take_place_names = [arcs[:take]].flatten give_place_names = [arcs[:give]].flatten @place_names.merge(take_place_names) @place_names.merge(give_place_names) @transition_by_name[transition_name] = Transition.new(take_place_names, give_place_names) end |