Sha256: 3276193ede69df214a7c23e2aeb5704bf8551626ff3591434076404ecc72c189
Contents?: true
Size: 1.26 KB
Versions: 3
Compression:
Stored size: 1.26 KB
Contents
require 'tengine/job/structure' module Tengine::Job::Structure::Visitor module Accepter def accept_visitor(visitor) visitor.visit(self) end end class Any def initialize(&block) @block = block end def visit(vertex) if result = @block.call(vertex) return result end vertex.children.each do |child| if result = child.accept_visitor(self) return result end end return nil end end class All def initialize(&block) @block = block end def visit(vertex) @block.call(vertex) vertex.children.each do |child| child.accept_visitor(self) end end end class AllWithEdge < All def visit(obj) if obj.respond_to?(:children) super(obj) else @block.call(obj) end return unless obj.respond_to?(:edges) obj.edges.each{|edge| edge.accept_visitor(self)} end end class TraceEdge def initialize(&block) @block = block end def visit(obj) @block.call(obj) if obj.respond_to?(:destination) obj.destination.accept_visitor(self) elsif obj.respond_to?(:next_edges) obj.next_edges.each{|edge| edge.accept_visitor(self) } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
tengine_job-1.2.2 | lib/tengine/job/structure/visitor.rb |
tengine_job-1.2.1 | lib/tengine/job/structure/visitor.rb |
tengine_job-1.2.0 | lib/tengine/job/structure/visitor.rb |