Sha256: a41e694486985d29f89aa4fd804157ce3429a54e925eb3f66595d9438b82331e

Contents?: true

Size: 668 Bytes

Versions: 17

Compression:

Stored size: 668 Bytes

Contents

require 'erb'
require 'yaml'

module Dandelion
  class Config
    attr_reader :path, :data
    
    def initialize(options = {})
      @path = options[:path]
      @data = @path ? load : (options[:data] || {})
    end

    def [](key)
      @data[key] || @data[key.to_s]
    end

    def []=(key, value)
      @data[key.to_s] = value
    end

    def defaults(values)
      values.each do |k, v|
        if self[k].nil?
          self[k] = v
        end
      end

      self
    end

  private

    def load
      YAML.load(template.result(binding)) || {}
    end

    def content
      IO.read(path)
    end

    def template
      ERB.new(content)
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
dandelion-0.6.0 lib/dandelion/config.rb
dandelion-0.5.4 lib/dandelion/config.rb
dandelion-0.5.3 lib/dandelion/config.rb
dandelion-0.5.2 lib/dandelion/config.rb
dandelion-0.5.1 lib/dandelion/config.rb
dandelion-0.5.0 lib/dandelion/config.rb
dandelion-0.4.17 lib/dandelion/config.rb
dandelion-0.4.16 lib/dandelion/config.rb
dandelion-0.4.15 lib/dandelion/config.rb
dandelion-0.4.14 lib/dandelion/config.rb
dandelion-0.4.10 lib/dandelion/config.rb
dandelion-0.4.9 lib/dandelion/config.rb
dandelion-0.4.8 lib/dandelion/config.rb
dandelion-0.4.7 lib/dandelion/config.rb
dandelion-0.4.6 lib/dandelion/config.rb
dandelion-0.4.5 lib/dandelion/config.rb
dandelion-0.4.4 lib/dandelion/config.rb