X-Git-Url: http://gitweb.michael.orlitzky.com/?p=mailshears.git;a=blobdiff_plain;f=lib%2Fcommon%2Fconfiguration.rb;h=b810b02f86c9d44711fbdae7836c391035d72c80;hp=caeab92a655a8dd92aa9b4dfa8784b2edc64ff14;hb=df4e02ebf6a4e28a58abcb298a4442a245ad0b15;hpb=d0bfa37fb4be739b31dd97c493764ca19a160182 diff --git a/lib/common/configuration.rb b/lib/common/configuration.rb index caeab92..b810b02 100644 --- a/lib/common/configuration.rb +++ b/lib/common/configuration.rb @@ -1,10 +1,32 @@ require 'yaml' +# A configuration object that knows how to read options out of a file +# in ~/.mailshears.conf.yml. The configuration options can be +# accessed via methods even though the internal representation is a +# hash. +# +# === Examples +# +# >> cfg = Configuration.new() +# >> cfg.i_mean_business() +# => true +# class Configuration + # The default path to the user's configuration file. USERCONF_PATH = ENV['HOME'] + '/.mailshears.conf.yml' + + # The hash structure in which we store our configuration options + # internally. @dict = {} + + # Initialize a {Configuration} object with the config file at *path*. + # + # @param path [String] the path to the configuration file to + # load. We check for a file named ".mailshears.conf.yml" in the + # user's home directory by default. + # def initialize(path = USERCONF_PATH) cfg = default_configuration() @@ -28,14 +50,26 @@ class Configuration end + # Replace all missing method calls with hash lookups. This lets us + # retrieve the values in our option hash by using methods named + # after the associated keys. + # + # @param sym [Symbol] the method that was called. + # + # @return [Object] the config file value associated with *sym*. + # def method_missing(sym, *args) - # Replace all missing method calls with dictionary lookups. return @dict[sym] end private; + + # A default config hash. + # + # @return [Hash] sensible default configuration values. + # def default_configuration() d = {}