Class: CommissionJunction::CjObject
- Inherits:
-
Object
- Object
- CommissionJunction::CjObject
- Defined in:
- lib/commission_junction.rb
Overview
Turn a hash into an object where each key becomes an instance method.
Direct Known Subclasses
Instance Method Summary collapse
- #clean_key_name(name) ⇒ Object
-
#initialize(params) ⇒ CjObject
constructor
A new instance of CjObject.
Constructor Details
#initialize(params) ⇒ CjObject
Returns a new instance of CjObject.
177 178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/commission_junction.rb', line 177 def initialize(params) raise ArgumentError, "params must be a Hash; got #{params.class} instead" unless params.is_a?(Hash) raise ArgumentError, 'Expecting at least one parameter' if params.empty? # Create instance variables and attribute readers on the fly. # Credit: http://listlibrary.net/ruby-talk/2004/03/00sGI1cD params.each do |key, val| raise ArgumentError, "key must be a String; got #{key.class} instead" unless key.is_a?(String) clean_key = clean_key_name(key) instance_variable_set("@#{clean_key}".intern, val) instance_eval %( class << self ; attr_reader #{clean_key.intern.inspect} ; end ) end end |
Instance Method Details
#clean_key_name(name) ⇒ Object
191 192 193 |
# File 'lib/commission_junction.rb', line 191 def clean_key_name(name) name.strip.gsub(/\s/, '_') end |