Class: CommissionJunction::CjObject

Inherits:
Object
  • Object
show all
Defined in:
lib/commission_junction.rb

Overview

Turn a hash into an object where each key becomes an instance method.

Direct Known Subclasses

Advertiser, Commission, Link, Product

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ CjObject

Returns a new instance of CjObject.

Raises:

  • (ArgumentError)


197
198
199
200
201
202
203
204
205
206
207
208
209
# File 'lib/commission_junction.rb', line 197

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



211
212
213
# File 'lib/commission_junction.rb', line 211

def clean_key_name(name)
  name.strip.gsub(/\s/, '_')
end