ruby-dmm 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 670cb0b87fb60026c846a59d48748c97ddfc7d4f
4
- data.tar.gz: 3844894fe455170c3986a19eecd0784100adc1df
3
+ metadata.gz: 05ff67107c04c13451281c2ddce1037f703bc594
4
+ data.tar.gz: c169bc92ef677da3de5b75d02d93b3bd09cf19da
5
5
  SHA512:
6
- metadata.gz: fce2f4cda62595cc10d10688d6f1e9c76be0a01bd0c032fd9679f4a63381766c695c2ee19c221bb75a302a4e11e85767adfb9f7403264e8d5680f6cef789db61
7
- data.tar.gz: 48802a4240c8136ed5715c0f33de35139d4965318dc20c47ca76c355be41db5a33e5c1187222d9456dddbaa877a36451ee403ee16238eb4631fe0cce2e5ea2df
6
+ metadata.gz: d8c039f51ec9c66217dfba522a124fb1550269ba32178d4c9c7efd7bf9e3a1b02b52e935c76819162266c37d4408fbbe3cb9d539648fa37b3f79a61bf322fc89
7
+ data.tar.gz: 032538ccbf823e0698bf0e280b37b47f1cd29a0ce7421ebdf4523bfa333c0bb86ce3d361a6527f2dbf8fb07283000b9ee67aa61fab7ca9d457b56da8127134b6
@@ -4,41 +4,29 @@ require 'ruby-dmm/response/item_info'
4
4
  module DMM
5
5
  class Response
6
6
  class Item
7
- KEYS = [
8
- :affiliate_url,
9
- :affiliate_url_sp,
10
- :bandaiinfo,
11
- :category_name,
12
- :cdinfo,
13
- :content_id,
14
- :floor_name,
15
- :isbn,
16
- :jancode,
17
- :maker_product,
18
- :product_id,
19
- :service_name,
20
- :stock,
21
- :title,
22
- :url,
23
- :url_sp,
24
- ]
25
- attr_reader *KEYS
26
- attr_reader *[
7
+
8
+ PREDEFINED_KEYS = [
27
9
  :date,
28
10
  :iteminfo,
29
- :large_images,
30
11
  :list_price,
31
12
  :price,
32
13
  :price_all,
33
14
  :prices,
34
15
  :small_images,
35
16
  ]
36
- alias :bandai_info :bandaiinfo
37
- alias :cd_info :cdinfo
38
- alias :item_info :iteminfo
17
+ attr_reader *PREDEFINED_KEYS
18
+ alias_method :item_info, :iteminfo
19
+ alias_method :info, :iteminfo
20
+
21
+ ALIAS_METHOD_MAP = {
22
+ :bandaiinfo => :bandai_info,
23
+ :cdinfo => :cd_info,
24
+ :image_url => :images,
25
+ }
39
26
 
40
27
  def initialize(item)
41
28
  item.each do |key, value|
29
+ key = key.to_sym
42
30
  case key
43
31
  when :date
44
32
  @date = Time.parse(value) if value
@@ -49,6 +37,16 @@ module DMM
49
37
  when :prices
50
38
  setup_prices(value) if value
51
39
  else
40
+ self.class.class_eval do
41
+ unless method_defined?(key)
42
+ define_method "#{key}" do
43
+ instance_variable_get("@#{key}")
44
+ end
45
+ if name = ALIAS_METHOD_MAP[key.to_sym]
46
+ alias_method name, key.to_sym
47
+ end
48
+ end
49
+ end
52
50
  instance_variable_set("@#{key}", item[key])
53
51
  end
54
52
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module DMM
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
@@ -7,10 +7,21 @@ describe DMM::Response::Item do
7
7
  @item = DMM::new.item_list.result.items.first
8
8
  end
9
9
 
10
- describe 'methods which returns integer' do
11
- subject { @item }
12
- DMM::Response::Item::KEYS.each do |key|
13
- it { should respond_to(key) }
10
+ describe '#images' do
11
+ subject { @item.images }
12
+ it { should be }
13
+ its([:list]) { should == 'http://pics.dmm.com/mono/movie/n_616dlr22659/n_616dlr22659pt.jpg' }
14
+ its([:small]) { should == 'http://pics.dmm.com/mono/movie/n_616dlr22659/n_616dlr22659ps.jpg' }
15
+ its([:large]) { should == 'http://pics.dmm.com/mono/movie/n_616dlr22659/n_616dlr22659pl.jpg' }
16
+ end
17
+
18
+ describe 'define alias methods' do
19
+ subject do
20
+ item = DMM::Response::Item::ALIAS_METHOD_MAP.keys.inject({}) {|h, key| h.merge(key => 1) }
21
+ DMM::Response::Item.new(item)
22
+ end
23
+ DMM::Response::Item::ALIAS_METHOD_MAP.values.each do |name|
24
+ it { should respond_to(name) }
14
25
  end
15
26
  end
16
27
 
@@ -27,4 +38,14 @@ describe DMM::Response::Item do
27
38
  end
28
39
  its(:large_images) { should == ["http://pics.dmm.co.jp/digital/video/aaa00000/aaa00000jp-9.jpg"] }
29
40
  end
41
+
42
+ describe 'define method for any keys' do
43
+ subject do
44
+ item = {
45
+ :not_defined_key => true,
46
+ }
47
+ DMM::Response::Item.new(item)
48
+ end
49
+ it { should respond_to(:not_defined_key) }
50
+ end
30
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-dmm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - meganemura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-28 00:00:00.000000000 Z
11
+ date: 2013-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday