Class: DMM::Response::ItemInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-dmm/response/item_info.rb

Constant Summary collapse

PLURAL_MAP =

for defining

alias_method :actors, :actor
{
  :actor    => :actors,
  :actress  => :actresses,
  :artist   => :artists,
  :author   => :authors,
  :color    => :colors,
  :director => :directors,
  :fighter  => :fighters,
  :genre    => :genres,
  :keyword  => :keywords,
  :label    => :labels,
  :maker    => :makers,
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item_info) ⇒ ItemInfo

Returns a new instance of ItemInfo.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ruby-dmm/response/item_info.rb', line 21

def initialize(item_info)
  item_info.each do |key, value|
    key = key.to_s
    value = self.class.integrate(value)
    self.class.class_eval do
      unless method_defined?(key)
        attr_reader key
        if (plural = PLURAL_MAP[key.to_sym])
          alias_method plural, key.to_sym
        end
      end
    end
    instance_variable_set("@#{key}", value)
  end
end

Class Method Details

.integrate(h) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/ruby-dmm/response/item_info.rb', line 37

def self.integrate(h)
  return nil unless h

  hashes = [h].flatten.inject({}) do |hash, params|
    id, key = params['id'].split('_')
    hash[id] ||= { 'id' => id }
    if key
      hash[id].merge!(key => params['name'])
    else
      hash[id].merge!('name' => params['name'])
    end
    hash
  end

  hashes.values
end