engine/lib/locomotive.rb
2010-04-23 01:52:11 +02:00

83 lines
2.0 KiB
Ruby

# require 'locomotive/patches'
require 'locomotive/configuration'
module Locomotive
class << self
attr_accessor :config
def config
self.config = Configuration.new unless @config
@config
end
end
def self.configure
self.config ||= Configuration.new
yield(self.config)
end
# class Configuration
#
# @@defaults = {
# :name => 'LocomotiveApp'
# :default_domain => 'rails.local.fr',
# :reserved_subdomains => %w{www admin email blog webmail mail support help site sites}
# }
#
# cattr_accessor :settings
#
# def initialize
# @@settings = self.class.get_from_hash(@@defaults)
# end
#
# def self.settings
# @@settings
# end
#
# def method_missing(name, *args, &block)
# self.settings.send(name, *args, &block)
# end
#
# protected
#
# # converts a hash map into a ConfigurationHash
# def self.get_from_hash(hash)
# config = ConfigurationHash.new
#
# hash.each_pair do |key, value|
# config[key] = value.is_a?(Hash) ? self.get_from_hash(value) : value
# end
#
# config
# end
# end
#
# # specialized hash for storing configuration settings
# class ConfigurationHash < Hash
# # ensure that default entries always produce
# # instances of the ConfigurationHash class
# def default(key=nil)
# include?(key) ? self[key] : self[key] = self.class.new
# end
#
# # retrieves the specified key and yields it
# # if a block is provided
# def [](key, &block)
# block_given? ? yield(super(key)) : super(key)
# end
#
# # provides member-based access to keys
# # i.e. params.id === params[:id]
# # note: all keys are converted to symbols
# def method_missing(name, *args, &block)
# if name.to_s.ends_with? '='
# send :[]=, name.to_s.chomp('=').to_sym, *args
# else
# send(:[], name.to_sym, &block)
# end
# end
# end
#
end