Module: Tengine::Job::Structure::JobnetFinder
- Included in:
- Runtime::Jobnet, Template::Jobnet
- Defined in:
- lib/tengine/job/structure/jobnet_finder.rb
Instance Method Summary collapse
- #find_descendant(vertex_id) ⇒ Object
- #find_descendant_by_name_path(name_path) ⇒ Object
- #find_descendant_edge(edge_id) ⇒ Object (also: #edge)
- #vertex(vertex_id) ⇒ Object
- #vertex_by_absolute_name_path(name_path) ⇒ Object
- #vertex_by_name_path(name_path) ⇒ Object
- #vertex_by_relative_name_path(name_path) ⇒ Object
Instance Method Details
#find_descendant(vertex_id) ⇒ Object
18 19 20 21 22 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 18 def find_descendant(vertex_id) vertex_id = String(vertex_id) return nil if vertex_id == self.id.to_s vertex(vertex_id) end |
#find_descendant_by_name_path(name_path) ⇒ Object
31 32 33 34 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 31 def find_descendant_by_name_path(name_path) return nil if name_path == self.name_path vertex_by_name_path(name_path) end |
#find_descendant_edge(edge_id) ⇒ Object Also known as: edge
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 5 def find_descendant_edge(edge_id) edge_id = String(edge_id) visitor = Tengine::Job::Structure::Visitor::Any.new do |vertex| if vertex.respond_to?(:edges) vertex.edges.detect{|edge| edge.id.to_s == edge_id} else nil end end visitor.visit(self) end |
#vertex(vertex_id) ⇒ Object
24 25 26 27 28 29 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 24 def vertex(vertex_id) vertex_id = String(vertex_id) return self if vertex_id == self.id.to_s visitor = Tengine::Job::Structure::Visitor::Any.new{|v| vertex_id == v.id.to_s ? v : nil } visitor.visit(self) end |
#vertex_by_absolute_name_path(name_path) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 42 def vertex_by_absolute_name_path(name_path) return self if name_path.to_s == self.name_path visitor = Tengine::Job::Structure::Visitor::Any.new do |vertex| if name_path == (vertex.respond_to?(:name_path) ? vertex.name_path : nil) vertex else nil end end visitor.visit(self) end |
#vertex_by_name_path(name_path) ⇒ Object
36 37 38 39 40 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 36 def vertex_by_name_path(name_path) Tengine::Job::Structure::NamePath.absolute?(name_path) ? root.vertex_by_absolute_name_path(name_path) : vertex_by_relative_name_path(name_path) end |
#vertex_by_relative_name_path(name_path) ⇒ Object
54 55 56 57 58 |
# File 'lib/tengine/job/structure/jobnet_finder.rb', line 54 def vertex_by_relative_name_path(name_path) head, tail = *name_path.split(Tengine::Job::Structure::NamePath::SEPARATOR, 2) child = child_by_name(head) tail ? child.vertex_by_relative_name_path(tail) : child end |