ruby-dmm 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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