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