Sha256: 27d63ed759a1d373f78799bfe169ae93c7147d56eb877c06bd52c397657c4472

Contents?: true

Size: 885 Bytes

Versions: 4

Compression:

Stored size: 885 Bytes

Contents

require 'delegate'

module Enki
  class Config < SimpleDelegator
    def initialize(file_name)
      super(symbolize_keys(YAML::load(IO.read(file_name))))
    end

    def [](*path)
      path.inject(__getobj__()) {|config, item|
        config[item]
      }
    end

    def author_open_ids
      [self[:author, :open_id]].flatten.map {|uri| URI.parse(uri)}
    end

    def self.default
      @@default ||= Enki::Config.new(default_location)
    end

    def self.default_location
      "#{Rails.root}/config/enki.yml"
    end
    
    def comments?
      self[:features, :comments]
    end
    
    def tags?
      self[:features, :tags]
    end

    private

    def symbolize_keys(hash)
      hash.inject({}) do |options, (key, value)|
        options[(key.to_sym rescue key) || key] = value.is_a?(Hash) ? symbolize_keys(value) : value
        options
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
enki-engine-0.0.5 lib/enki/config.rb
enki-engine-0.0.4 lib/enki/config.rb
enki-engine-0.0.3 lib/enki/config.rb
enki-engine-0.0.2 lib/enki/config.rb