Class: CPEE::ProcessTransformation::Graph
- Inherits:
-
Object
- Object
- CPEE::ProcessTransformation::Graph
- Defined in:
- lib/cpee/processtransformation/structures.rb
Overview
}}}
Instance Attribute Summary collapse
-
#flow ⇒ Object
readonly
{{{.
-
#nodes ⇒ Object
readonly
{{{.
Instance Method Summary collapse
- #add_link(l) ⇒ Object
- #add_node(n) ⇒ Object
- #clean_up(&bl) ⇒ Object
- #find_script_id(s) ⇒ Object
-
#initialize ⇒ Graph
constructor
A new instance of Graph.
- #link(f, t) ⇒ Object
- #next_node(from) ⇒ Object
- #next_nodes(from) ⇒ Object
Constructor Details
#initialize ⇒ Graph
Returns a new instance of Graph.
164 165 166 167 |
# File 'lib/cpee/processtransformation/structures.rb', line 164 def initialize @nodes = {} @links = [] end |
Instance Attribute Details
#flow ⇒ Object (readonly)
{{{
162 163 164 |
# File 'lib/cpee/processtransformation/structures.rb', line 162 def flow @flow end |
#nodes ⇒ Object (readonly)
{{{
162 163 164 |
# File 'lib/cpee/processtransformation/structures.rb', line 162 def nodes @nodes end |
Instance Method Details
#add_link(l) ⇒ Object
206 207 208 |
# File 'lib/cpee/processtransformation/structures.rb', line 206 def add_link(l) @links << l end |
#add_node(n) ⇒ Object
198 199 200 |
# File 'lib/cpee/processtransformation/structures.rb', line 198 def add_node(n) @nodes[n.id] = n end |
#clean_up(&bl) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/cpee/processtransformation/structures.rb', line 169 def clean_up(&bl) selnodes = [] @nodes.each do |k,n| ret = bl.call(n) selnodes << n if ret end selnodes.each do |n| if n.incoming > 1 || n.outgoing > 1 raise "#{n.inspect} - not a simple node to remove" end to,from = nil @links.each do |f| to = f if f.to == n.id from = f if f.from == n.id end if to && from to.to = from.to @links.delete(from) @nodes.delete(n.id) else raise "#{n.inspect} - could not remove flow" end end end |
#find_script_id(s) ⇒ Object
194 195 196 |
# File 'lib/cpee/processtransformation/structures.rb', line 194 def find_script_id(s) @nodes.find_all{|k,n| n.script_id == s} end |
#link(f, t) ⇒ Object
202 203 204 |
# File 'lib/cpee/processtransformation/structures.rb', line 202 def link(f,t) @links.find{ |x| x.from == f && x.to == t } end |
#next_node(from) ⇒ Object
215 216 217 218 219 220 221 |
# File 'lib/cpee/processtransformation/structures.rb', line 215 def next_node(from) if (nodes = next_nodes(from)).length == 1 nodes.first else raise "#{from.inspect} - multiple outgoing connections" end end |
#next_nodes(from) ⇒ Object
210 211 212 213 |
# File 'lib/cpee/processtransformation/structures.rb', line 210 def next_nodes(from) links = @links.find_all { |x| x.from == from.id } links.map{|x| @nodes[x.to] } end |