class Bcome::ConfigFactory
Attributes
tree[R]
Public Class Methods
new()
click to toggle source
# File lib/objects/config_factory.rb, line 6 def initialize @tree = { views: [] } @collections = [] end
Public Instance Methods
add_crumbs(crumbs, data)
click to toggle source
# File lib/objects/config_factory.rb, line 15 def add_crumbs(crumbs, data) views = @tree number_crumbs = crumbs.size crumbs.each_with_index do |crumb, index| is_last_crumb = number_crumbs == (index + 1) if this_view = hash_for_identifier_from_view(crumb, views) views = this_view else this_view = { identifier: crumb } this_view[:views] = [] unless is_last_crumb && data[:type].to_sym == :inventory views[:views] << this_view views = hash_for_identifier_from_view(crumb, views) end this_view.merge!(data) if is_last_crumb end end
flattened()
click to toggle source
# File lib/objects/config_factory.rb, line 11 def flattened @tree[:views].first end
hash_for_identifier_from_view(identifier, views)
click to toggle source
# File lib/objects/config_factory.rb, line 34 def hash_for_identifier_from_view(identifier, views) raise Bcome::Exception::InventoriesCannotHaveSubViews, 'Inventories cannot hold other inventories - invalid network config' unless views.key?(:views) views[:views].select { |v| v[:identifier].to_s == identifier.to_s }.first end