remainders
end
- def coercion_and_check check_cfg
+ def coercion_and_check check_cfg, check_nonempty: true
@config_types.each do |cfgkey, cfgtype|
cfg = check_cfg
k = cfgkey
end
if cfgtype == NonemptyString
- if (!cfg[k] || cfg[k] == "")
+ if (!cfg[k] || cfg[k] == "") && check_nonempty
raise "#{cfgkey} cannot be empty"
end
if cfg[k].is_a? String
def self.copy_into_config src, dst
src.each do |k, v|
- dst.send "#{k}=", Marshal.load(Marshal.dump v)
+ dst.send "#{k}=", self.to_OrderedOptions(v)
+ end
+ end
+
+ def self.to_OrderedOptions confs
+ if confs.is_a? Hash
+ opts = ActiveSupport::OrderedOptions.new
+ confs.each do |k,v|
+ opts[k] = self.to_OrderedOptions(v)
+ end
+ opts
+ elsif confs.is_a? Array
+ confs.map { |v| self.to_OrderedOptions v }
+ else
+ confs
+ end
+ end
+
+ def self.load path, erb: false
+ if File.exist? path
+ yaml = IO.read path
+ if erb
+ yaml = ERB.new(yaml).result(binding)
+ end
+ YAML.load(yaml, deserialize_symbols: false)
+ else
+ {}
end
end