class DependencyTree
Defines a simple dependency tree in a has map and allows accessing top and GlobalConstants::NEXT item in the tree. - The keys 'GlobalConstants::NEXT, GlobalConstants::PREVIOUS and GlobalConstants::PROJECTNAME_NAME' are self-descriptive and symbols - GlobalConstants::IS_ROOT's project GlobalConstants::PREVIOUS is always nil, so are all leaf node GlobalConstants::NEXT { "Ontology" => { "GlobalConstants::PROJECTNAME" => "Ontology", "GlobalConstants::IS_ROOT" => "y", "GlobalConstants::NEXT" => "FhirWalker", "GlobalConstants::PREVIOUS" => nil, "metadata" => "[json or another hash]" }, "FhirWalker" => { "GlobalConstants::PROJECTNAME" => "Portal", "GlobalConstants::NEXT" => "EventTracking", "GlobalConstants::PREVIOUS" => "Ontology", "metadata" => "[json or another hash]" } }
end¶ ↑
Public Class Methods
new(dependency_map)
click to toggle source
# File lib/dependency_tree.rb, line 25 def initialize dependency_map @dependency_map = dependency_map @root_node = nil end
Public Instance Methods
next_node(current)
click to toggle source
# File lib/dependency_tree.rb, line 43 def next_node current return nil if current.to_s.strip.length == 0 return nil if @dependency_map.nil? || !@dependency_map.is_a?(GlobalConstants::HASH) || @dependency_map.empty? if @dependency_map[current].has_key? GlobalConstants::NEXT next_node_name = @dependency_map[current][GlobalConstants::NEXT] next_node = @dependency_map[next_node_name] return nil if next_node.nil? return Hashit.new next_node, next_node_name end end
previous_node(current)
click to toggle source
# File lib/dependency_tree.rb, line 55 def previous_node current return nil if current.to_s.strip.length == 0 return nil if @dependency_map.nil? || !@dependency_map.is_a?(GlobalConstants::HASH) || @dependency_map.empty? if @dependency_map[current].has_key? GlobalConstants::PREVIOUS prev_node_name = @dependency_map[current][GlobalConstants::PREVIOUS] prev_node = @dependency_map[prev_node_name] return nil if prev_node.nil? return Hashit.new prev_node, prev_node_name end end
root()
click to toggle source
# File lib/dependency_tree.rb, line 30 def root return nil if @dependency_map.nil? || !@dependency_map.is_a?(GlobalConstants::HASH) || @dependency_map.empty? return @root_node if !@root_node.nil? @dependency_map.each do |k,v| if v.has_key?(GlobalConstants::IS_ROOT) && v[GlobalConstants::IS_ROOT].downcase == 'y' root_node = Hashit.new v, k @root_node = root_node return @root_node end end end
traverse() { |current| ... }
click to toggle source
# File lib/dependency_tree.rb, line 67 def traverse current = root yield current while current != nil begin current = next_node current._node_name rescue #puts $! current = nil end yield current if !current.nil? end end