Sha256: ff80015e39d42e850dddf72e3996b3ded8fe8ae075c30c13e66c9efdaa2df4af

Contents?: true

Size: 888 Bytes

Versions: 35

Compression:

Stored size: 888 Bytes

Contents

require 'iniparse'

module Perus
    class Options
        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 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]
            else
                @options['__anonymous__'][name.to_s]
            end
        end

        def [](name)
            @options[name]
        end
    end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
perus-1.0.5 lib/perus/options.rb
perus-1.0.4 lib/perus/options.rb
perus-1.0.3 lib/perus/options.rb
perus-1.0.2 lib/perus/options.rb
perus-1.0.1 lib/perus/options.rb
perus-1.0.0 lib/perus/options.rb
perus-0.1.35 lib/perus/options.rb
perus-0.1.34 lib/perus/options.rb
perus-0.1.33 lib/perus/options.rb
perus-0.1.32 lib/perus/options.rb
perus-0.1.31 lib/perus/options.rb
perus-0.1.30 lib/perus/options.rb
perus-0.1.29 lib/perus/options.rb
perus-0.1.28 lib/perus/options.rb
perus-0.1.27 lib/perus/options.rb
perus-0.1.26 lib/perus/options.rb
perus-0.1.25 lib/perus/options.rb
perus-0.1.24 lib/perus/options.rb
perus-0.1.23 lib/perus/options.rb
perus-0.1.22 lib/perus/options.rb