lib/perus/options.rb in perus-0.1.6 vs lib/perus/options.rb in perus-0.1.7

- old
+ new

@@ -1,19 +1,24 @@ require 'iniparse' module Perus class Options - def initialize() + def initialize @defaults = {} end def load(path, defaults) if File.exists?(path) user_options = IniParse.parse(IO.read(path)).to_h else user_options = {} end - @options = defaults.merge(user_options) + + # options are only one level deep, so resolve conflicts + # by just merging the two conflicting hashes again + @options = defaults.merge(user_options) do |key, default, user| + default.merge(user) + end end def method_missing(name, *params, &block) if @options.include?(name.to_s) @options[name.to_s]