module Alki::OverrideBuilder

Public Class Methods

build(override_hash=nil,&blk) click to toggle source
# File lib/alki/override_builder.rb, line 9
def build(override_hash=nil,&blk)
  if blk
    data = Alki::Dsl.build('alki/dsls/assembly_group',&blk)
    Overrides.new data[:root], data[:meta]
  elsif override_hash && !override_hash.empty?
    Overrides.new create_override_group(override_hash), Alki::Assembly::MetaList.new
  else
    Overrides.new build_type(:group), Alki::Assembly::MetaList.new
  end
end

Private Class Methods

build_type(type,*args) click to toggle source
# File lib/alki/override_builder.rb, line 39
def build_type(type,*args)
  Assembly::Types.build(type,*args)
end
create_override_group(overrides) click to toggle source
# File lib/alki/override_builder.rb, line 22
def create_override_group(overrides)
  unless overrides.empty?
    root = build_type(:group)
    overrides.each do |path,value|
      set_override root, *path.to_s.split('.'), value
    end
    root
  end
end
set_override(root,*parent_keys,key,value) click to toggle source
# File lib/alki/override_builder.rb, line 32
def set_override(root,*parent_keys,key,value)
  parent = parent_keys.inject(root) do |group,parent_key|
    group.children[parent_key.to_sym] ||= build_type(:group)
  end
  parent.children[key.to_sym] = build_type(:value, value)
end