class Cheffish::MergedConfig
Attributes
configs[R]
Public Class Methods
new(*configs)
click to toggle source
# File lib/cheffish/merged_config.rb, line 5 def initialize(*configs) @configs = configs.map { |config| Mash.from_hash config.to_hash } @merge_arrays = Mash.new end
Public Instance Methods
[](name)
click to toggle source
# File lib/cheffish/merged_config.rb, line 23 def [](name) if @merge_arrays[name] configs.select { |c| !c[name].nil? }.collect_concat { |c| c[name] } else result_configs = [] configs.each do |config| value = config[name] unless value.nil? if value.respond_to?(:keys) result_configs << value elsif result_configs.size > 0 return result_configs[0] else return value end end end if result_configs.size > 1 MergedConfig.new(*result_configs) elsif result_configs.size == 1 result_configs[0] else nil end end end
each() { |key, self| ... }
click to toggle source
# File lib/cheffish/merged_config.rb, line 81 def each keys.each do |key| if block_given? yield key, self[key] end end end
each_pair(&block)
click to toggle source
# File lib/cheffish/merged_config.rb, line 77 def each_pair(&block) each(&block) end
empty?()
click to toggle source
# File lib/cheffish/merged_config.rb, line 73 def empty? configs.empty? end
key?(name)
click to toggle source
# File lib/cheffish/merged_config.rb, line 59 def key?(name) configs.any? { |config| config.key?(name) } end
Also aliased as: has_key?
keys()
click to toggle source
# File lib/cheffish/merged_config.rb, line 65 def keys configs.flat_map(&:keys).uniq end
merge_arrays(*symbols)
click to toggle source
# File lib/cheffish/merged_config.rb, line 13 def merge_arrays(*symbols) if symbols.size > 0 symbols.each do |symbol| @merge_arrays[symbol] = true end else @merge_arrays end end
method_missing(name, *args)
click to toggle source
# File lib/cheffish/merged_config.rb, line 50 def method_missing(name, *args) $stderr.puts "WARN: deprecated use of method_missing on a Cheffish::MergedConfig object at #{caller[0]}" if args.count > 0 raise NoMethodError, "Unexpected method #{name} for MergedConfig with arguments #{args}" else self[name] end end
to_h()
click to toggle source
# File lib/cheffish/merged_config.rb, line 97 def to_h to_hash end
to_hash()
click to toggle source
# File lib/cheffish/merged_config.rb, line 89 def to_hash result = {} each_pair do |key, value| result[key] = value end result end
to_s()
click to toggle source
# File lib/cheffish/merged_config.rb, line 101 def to_s to_hash.to_s end
values()
click to toggle source
# File lib/cheffish/merged_config.rb, line 69 def values keys.map { |key| self[key] } end