Sha256: c8471cdde992df15c973a951e39b001a76b31ae4aca33b5cfbe0e66aea5ad7b6

Contents?: true

Size: 972 Bytes

Versions: 6

Compression:

Stored size: 972 Bytes

Contents

module Mandriller
  module SettingsMethods
    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def define_settings_methods(*keys)
        options = keys[-1].is_a?(Hash) ? keys.pop : {}
        if default = options[:default]
          arg_s = "v = #{default.inspect}"
        else
          arg_s = "v"
        end

        keys.flatten.each do |key|
          class_eval <<-EOS
          class_attribute :mandrill_#{key}
          def self.set_#{key}(#{arg_s})
            self.mandrill_#{key} = v
          end
          private_class_method :set_#{key}
          def set_#{key}(#{arg_s})
            @mandrill_#{key} = v
          end
          private :set_#{key}
          EOS
        end
      end
    end

    def get_mandrill_setting(key)
      instance_variable_defined?("@mandrill_#{key}") ? instance_variable_get("@mandrill_#{key}") : __send__("mandrill_#{key}")
    end
    private :get_mandrill_setting
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mandriller-0.0.7 lib/mandriller/settings_methods.rb
mandriller-0.0.6 lib/mandriller/settings_methods.rb
mandriller-0.0.5 lib/mandriller/settings_methods.rb
mandriller-0.0.4 lib/mandriller/settings_methods.rb
mandriller-0.0.3 lib/mandriller/settings_methods.rb
mandriller-0.0.1 lib/mandriller/settings_methods.rb