Sha256: 66ce40c93af4b0b00c3e46c8e2c4654d91a8c30a1ea37cbe4a3d05154ec03998
Contents?: true
Size: 1.7 KB
Versions: 1
Compression:
Stored size: 1.7 KB
Contents
class Forecast class Config attr_accessor :adapters, :provider, :temp_scale, :conditions, :cache, :themes, :theme def initialize @config_file = File.dirname(File.dirname(File.dirname(__FILE__))) + "/config/forecast.yml" self.load(File.dirname(__FILE__) + '/**/*.yml') self.load(@config_file) def theme if @theme != nil if @theme.is_a?(Hash) return @theme end if themes[@theme] != nil return themes[@theme] end end return @theme end end def load(pattern) Dir.glob(pattern).sort{ |a, b| a.split(/\//).length <=> b.split(/\//).length}.reverse.each do |f| obj = YAML.load_file(f) if obj['forecast'] != nil obj['forecast'].each do |k, v| if respond_to?("#{k}") o = send("#{k}") if o.is_a?(Hash) v = deep_merge(o, v) end end send("#{k}=", v) if respond_to?("#{k}=") end end end end private def deep_merge(hash, other_hash, &block) other_hash.each_pair do |k,v| tv = hash[k] if tv.is_a?(Hash) && v.is_a?(Hash) hash[k] = deep_merge(tv, v, &block) else hash[k] = block && tv ? block.call(k, tv, v) : v end end hash end end def self.config @@config ||= Config.new end def self.configure yield self.config # puts 'configured' # if self.config.config_file != nil # puts 'load config from file' # self.config.load(@config_file) # end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
forecast-0.0.2 | lib/forecast/config.rb |