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]