From 113d3a59eaa7547433434d155fc1e60aa7c2094c Mon Sep 17 00:00:00 2001 From: elijah Date: Thu, 11 Oct 2012 00:42:46 -0700 Subject: code cleanup. better support for nested configs and templates. --- lib/leap_cli/config/list.rb | 81 --------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 lib/leap_cli/config/list.rb (limited to 'lib/leap_cli/config/list.rb') diff --git a/lib/leap_cli/config/list.rb b/lib/leap_cli/config/list.rb deleted file mode 100644 index 28ef499..0000000 --- a/lib/leap_cli/config/list.rb +++ /dev/null @@ -1,81 +0,0 @@ -module LeapCli - module Config - class List < Hash - - def initialize(config=nil) - if config - self << config - end - end - - # - # if the key is a hash, we treat it as a condition and filter all the configs using the condition - # - # for example: - # - # nodes[:public_dns => true] - # - # will return a ConfigList with node configs that have public_dns set to true - # - def [](key) - if key.is_a? Hash - results = List.new - field, match_value = key.to_a.first - field = field.is_a?(Symbol) ? field.to_s : field - match_value = match_value.is_a?(Symbol) ? match_value.to_s : match_value - each do |name, config| - value = config[field] - if !value.nil? - if value.is_a? Array - if value.includes?(match_value) - results[name] = config - end - else - if value == match_value - results[name] = config - end - end - end - end - results - else - super - end - end - - def <<(config) - if config.is_a? Config::List - self.deep_merge!(config) - elsif config['name'] - self[config['name']] = config - else - raise ArgumentError.new('argument must be a Config::Base or a Config::List') - end - end - - # - # converts the hash of configs into an array of hashes, with ONLY the specified fields - # - def fields(*fields) - result = [] - keys.sort.each do |name| - result << self[name].pick(*fields) - end - result - end - - # - # like fields(), but returns an array of values instead of an array of hashes. - # - def field(field) - field = field.to_s - result = [] - keys.sort.each do |name| - result << self[name][field] - end - result - end - - end - end -end -- cgit v1.2.3