cb_nitride 0.1.41 → 0.1.43

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: 723359bc440d2f8aceae994d3b97469518ebc8c7
4
- data.tar.gz: b871f31d9699ce67f2e233438492795b32358b03
3
+ metadata.gz: 802e587affbe9f50bd597c55ae1e7cabdc806a6c
4
+ data.tar.gz: c199b4958ef85e82aa4bfc974c0e118d2b343935
5
5
  SHA512:
6
- metadata.gz: 7af938ac8431f2c102fe1d0cbca697e92a462b981415fb76de89ce1c04af52a07f83a8c5751eb6dee6d49f5346e1edf9cbcc05118ef8316677e32f3fda39b6fe
7
- data.tar.gz: 5ec776da91d0cc4c9c8080a64aaa87f5116012c504cb15fa2b027bdc61ed2ff85b1a8da5f55eba8de6c6d4d7e855542e4610c88b11317d45e26567a01a2188c0
6
+ metadata.gz: b4af2cbb519619f1f9ed41e2deaf5f1be49bc1b5cea9c471095d9ffb614c889900e4786f09ef4c737f692891eedc3e47a47df54430a87813b8ad5d91838cd336
7
+ data.tar.gz: 52fa620cb30c0553e3c1035de475f2c5208e10a67dbe32f92757aff1d7a98def294ecc478e5a249b487a64afb2a4c902b5dc2f6f964597b3506cc9eedce2e767
@@ -3,11 +3,11 @@ module CbNitride
3
3
 
4
4
  SHORT_PAREN_OF_PATTERN = /\s*[O][f][(]/
5
5
 
6
- attr_reader :state, :diamond_number, :stock_number, :image_url, :publisher, :creators, :description, :release_date, :price, :category_code, :errors, :raw_title, :image
6
+ attr_accessor :state, :diamond_number, :stock_number, :image_url, :publisher, :creators, :description, :release_date, :price, :category_code, :errors, :raw_title, :image
7
7
 
8
8
  def initialize(options = {})
9
9
  @state = options[:state]
10
- @raw_title = options[:title]
10
+ @raw_title = options[:title].sub(SHORT_PAREN_OF_PATTERN, ' (Of ')
11
11
  @diamond_number = options[:diamond_number]
12
12
  @stock_number = options[:stock_number]
13
13
  @image = options[:image]
@@ -20,115 +20,5 @@ module CbNitride
20
20
  @category_code = options[:category_code]
21
21
  @errors = options[:errors]
22
22
  end
23
-
24
- def release_year
25
- if release_date.nil?
26
- return nil
27
- else
28
- return release_date.year.to_i
29
- end
30
- end
31
- def raw_title
32
- @_raw_title ||= @raw_title.sub(SHORT_PAREN_OF_PATTERN, ' (Of ')
33
- end
34
-
35
- def author
36
- @_author ||= creators_hash["W"]
37
- end
38
-
39
- def artist
40
- @_artist ||= creators_hash["A"]
41
- end
42
-
43
- def cover_artist
44
- @_cover_artist ||= creators_hash["CA"]
45
- end
46
-
47
- def series_title
48
- @_series_title ||= title_formatter.series_title || title
49
- end
50
-
51
- def title
52
- @_title ||= title_formatter.clean_title
53
- end
54
-
55
- def special_number
56
- @_special_number ||= title_formatter.special_number
57
- end
58
-
59
- def issue_number
60
- @issue_number ||= title_formatter.issue_number
61
- end
62
-
63
- def limited_series_max_issue
64
- @_limited_series_max_issue ||= title_formatter.limited_series_max_issue
65
- end
66
-
67
- def variant_description
68
- @_variant_description ||= title_formatter.variant_description
69
- end
70
-
71
- def product_type?
72
- return :issue if is_issue?
73
- return :variant if is_variant?
74
- return :collection if is_collection?
75
- return :merchandise if is_merch?
76
- end
77
-
78
- private
79
-
80
- def creators_hash
81
- return @_creators_hash if @_creators_hash
82
- array = creators.split('(').map {|x| x.split(')')}.flatten.map {|x| x.strip}
83
- hash ={}
84
- array.each_with_index do |val, i|
85
- if i.even? || i == 0
86
- if val.include? '/'
87
- val.split('/').each_with_index do |key, index|
88
- instance_variable_set("@key#{index + 1}".to_sym, key)
89
- end
90
- else
91
- @key = val
92
- end
93
- elsif i.odd?
94
- @value = val
95
- hash.merge! @key => @value if @key
96
- hash.merge! @key1 => @value if @key1
97
- hash.merge! @key2 => @value if @key2
98
- hash.merge! @key3 => @value if @key3
99
- @value = nil
100
- @key = nil
101
- @key1= nil
102
- @key2 = nil
103
- @key3 = nil
104
- end
105
- end
106
- @_creators_hash = hash
107
- end
108
-
109
- def title_formatter
110
- @_formatted_title ||= TitleFormatter.new(raw_title)
111
- end
112
-
113
- def is_collection?
114
- @_is_collection ||= CategorySorter::COLLECTION_CODE == category_code
115
- end
116
-
117
- def is_merch?
118
- @_is_merch ||= CategorySorter::MERCHANDISE_CODES.include? category_code
119
- end
120
-
121
- def is_issue?
122
- @_is_issue ||=
123
- category_code == CategorySorter::ISSUE_CODE && category_sorter.is_issue?
124
- end
125
-
126
- def category_sorter
127
- @_category_sorter ||= CategorySorter.new({title: title, category_code: category_code })
128
- end
129
-
130
- def is_variant?
131
- @_is_variant ||= category_code == CategorySorter::ISSUE_CODE && category_sorter.is_variant?
132
- end
133
23
  end
134
24
  end
@@ -26,7 +26,7 @@ module CbNitride
26
26
  if item.valid_diamond_number?
27
27
  item.spawn_item
28
28
  else
29
- return nil
29
+ return NullItem.new(diamond_number)
30
30
  end
31
31
  end
32
32
 
@@ -53,8 +53,8 @@ module CbNitride
53
53
  item_page.css("a.FancyPopupImage").children[1]["alt"].gsub(" Image", "")
54
54
  end
55
55
 
56
- def uncategorized_hash
57
- @_uncategorized_hash ||= {
56
+ def branded_hash
57
+ @_branded_hash ||= {
58
58
  title: find_text_with(TITLE_CLASS),
59
59
  diamond_number: diamond_number,
60
60
  stock_number: get_stock_number,
@@ -73,13 +73,6 @@ module CbNitride
73
73
  MechanizeClip.get get_image_url(BASE_URL, IMAGE_CLASS), agent
74
74
  end
75
75
 
76
- def branded_hash
77
- @_branded_hash ||=
78
- uncategorized_hash.merge!(
79
- category_code: CategorySorter.new(uncategorized_hash).sort
80
- )
81
- end
82
-
83
76
  def item_page
84
77
  @item_page ||= Nokogiri::HTML(agent.get(SEARCH_URL + diamond_number).content)
85
78
  end
@@ -1,3 +1,3 @@
1
1
  module CbNitride
2
- VERSION = "0.1.41"
2
+ VERSION = "0.1.43"
3
3
  end
data/lib/cb_nitride.rb CHANGED
@@ -6,11 +6,9 @@ require "cb_nitride/configuration"
6
6
  require "cb_nitride/diamond_login"
7
7
  require "cb_nitride/public_hasher"
8
8
  require "cb_nitride/private_hasher"
9
- require "cb_nitride/category_sorter"
10
9
  require "cb_nitride/diamond_item"
11
10
  require "cb_nitride/diamond_number_set"
12
11
  require "cb_nitride/diamond_number_formatter"
13
- require "cb_nitride/title_formatter"
14
12
  require "cb_nitride/null_item"
15
13
 
16
14
  module CbNitride
data/test/test_helper.rb CHANGED
@@ -48,6 +48,7 @@ module HasherTests
48
48
  VARIANT_CODE = "APR130183"
49
49
  MERCH_CODE = "MAR131699"
50
50
  COLLECTION_CODE = "FEB130068"
51
+ BAD_CODE = "FEB1099999"
51
52
 
52
53
  end
53
54
 
@@ -27,7 +27,6 @@ class PrivateHasherTest < MiniTest::Unit::TestCase
27
27
 
28
28
  def test_that_the_private_diamond_item_contains_the_right_fields
29
29
  setup_object(ISSUE_CODE)
30
- refute_equal @item.title, "Pug Party Parade"
31
30
  assert_equal @item.stock_number, "STK611169"
32
31
  assert_equal @item.diamond_number, ISSUE_CODE
33
32
  assert_equal @item.image.class, MechanizeClip::PageTmpFile
@@ -40,28 +39,9 @@ class PrivateHasherTest < MiniTest::Unit::TestCase
40
39
  assert_equal @item.category_code, "1"
41
40
  end
42
41
 
43
- def test_that_the_private_hash_identifies_issues
44
- setup_object(ISSUE_CODE)
45
- assert_equal @item.category_code, ISSUE_CATEGORY_CODE
46
- end
47
-
48
- def test_that_the_private_hash_identifies_variants
49
- setup_object(VARIANT_CODE)
50
- assert_equal @item.category_code, ISSUE_CATEGORY_CODE
51
- end
52
-
53
- def test_that_the_private_hash_identifies_merchandise
54
- setup_object(MERCH_CODE)
55
- assert_includes MERCHANDISE_CATEGORY_CODES, @item.category_code
56
- end
57
-
58
- def test_that_the_private_hash_identifies_collection
59
- setup_object(COLLECTION_CODE)
60
- assert_equal @item.category_code, COLLECTION_CATEGORY_CODE
61
- end
62
-
63
42
  def test_that_the_private_hash_identifies_invalid_diamond_codes
64
- setup_object("FEB1099999")
65
- assert_equal @item, nil
43
+ setup_object(BAD_CODE)
44
+ assert_equal @item.class, CbNitride::NullItem
45
+ assert_equal @item.diamond_number, BAD_CODE
66
46
  end
67
47
  end
@@ -18,7 +18,6 @@ class PublicHasherTest < MiniTest::Unit::TestCase
18
18
 
19
19
  def test_that_the_public_diamond_item_contains_the_right_fields
20
20
  setup_object(ISSUE_CODE)
21
- refute_equal @item.title, "Pug Party Parade"
22
21
  assert_equal @item.stock_number, "STK611169"
23
22
  assert_equal @item.diamond_number, ISSUE_CODE
24
23
  assert_equal @item.image.class, MechanizeClip::PageTmpFile
@@ -28,32 +27,12 @@ class PublicHasherTest < MiniTest::Unit::TestCase
28
27
  assert_equal @item.release_date.to_s, "2013-06-05"
29
28
  assert_equal @item.price, 2.99
30
29
  assert_equal @item.state, :public
31
- assert_equal @item.category_code, "1"
32
- end
33
-
34
- def test_that_the_public_hash_identifies_issues
35
- setup_object(ISSUE_CODE)
36
- assert_equal @item.category_code, ISSUE_CATEGORY_CODE
37
- end
38
-
39
- def test_that_the_public_hash_identifies_variants
40
- setup_object(VARIANT_CODE)
41
- assert_equal @item.category_code, ISSUE_CATEGORY_CODE
42
- end
43
-
44
- def test_that_the_public_hash_identifies_merchandise
45
- setup_object(MERCH_CODE)
46
- assert_includes MERCHANDISE_CATEGORY_CODES, @item.category_code
47
- end
48
-
49
- def test_that_the_public_hash_identifies_collection
50
- setup_object(COLLECTION_CODE)
51
- assert_equal @item.category_code, COLLECTION_CATEGORY_CODE
52
30
  end
53
31
 
54
32
  def test_that_the_public_hash_identifies_invalid_diamond_codes
55
- setup_object("FEB1099999")
56
- assert_equal @item, nil
33
+ setup_object(BAD_CODE)
34
+ assert_equal @item.class, CbNitride::NullItem
35
+ assert_equal @item.diamond_number, BAD_CODE
57
36
  end
58
37
 
59
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cb_nitride
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.41
4
+ version: 0.1.43
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Jarvis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-16 00:00:00.000000000 Z
11
+ date: 2013-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,6 @@ files:
94
94
  - Rakefile
95
95
  - cb_nitride.gemspec
96
96
  - lib/cb_nitride.rb
97
- - lib/cb_nitride/category_sorter.rb
98
97
  - lib/cb_nitride/configuration.rb
99
98
  - lib/cb_nitride/diamond_item.rb
100
99
  - lib/cb_nitride/diamond_login.rb
@@ -106,7 +105,6 @@ files:
106
105
  - lib/cb_nitride/null_item.rb
107
106
  - lib/cb_nitride/private_hasher.rb
108
107
  - lib/cb_nitride/public_hasher.rb
109
- - lib/cb_nitride/title_formatter.rb
110
108
  - lib/cb_nitride/version.rb
111
109
  - test/cassettes/test_that_it_can_log_in_cassette.yml
112
110
  - test/cassettes/test_that_it_fails_with_bad_information_cassette.yml
@@ -129,7 +127,6 @@ files:
129
127
  - test/cassettes/test_that_the_public_hash_produces_a_diamond_item_cassette.yml
130
128
  - test/test_helper.rb
131
129
  - test/unit/configuration_test.rb
132
- - test/unit/diamond_item_test.rb
133
130
  - test/unit/diamond_login_test.rb
134
131
  - test/unit/diamond_number_formatter_test.rb
135
132
  - test/unit/private_hasher_test.rb
@@ -182,7 +179,6 @@ test_files:
182
179
  - test/cassettes/test_that_the_public_hash_produces_a_diamond_item_cassette.yml
183
180
  - test/test_helper.rb
184
181
  - test/unit/configuration_test.rb
185
- - test/unit/diamond_item_test.rb
186
182
  - test/unit/diamond_login_test.rb
187
183
  - test/unit/diamond_number_formatter_test.rb
188
184
  - test/unit/private_hasher_test.rb
@@ -1,95 +0,0 @@
1
- module CbNitride
2
- class CategorySorter
3
-
4
- ISSUE_CODE = "1"
5
- COLLECTION_CODE = "3"
6
- MERCHANDISE_CODES = ["2", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]
7
-
8
- attr_reader :hash
9
-
10
- def initialize(hash)
11
- @hash = hash
12
- end
13
-
14
- def sort
15
- return hash[:category_code] unless hash[:category_code].nil?
16
- return ISSUE_CODE if is_variant?
17
- return COLLECTION_CODE if is_collection?
18
- return "16" if is_merch?
19
- return ISSUE_CODE if is_issue?
20
- end
21
-
22
- def is_variant?
23
- return @is_variant unless @is_variant.nil?
24
- @is_variant = true if hash[:title].include? "VAR ED"
25
- @is_variant = true if hash[:title].include? "COMBO PACK"
26
- @is_variant = true if hash[:title].include? "STANDARD ED"
27
- @is_variant = true if hash[:title].match(/(CVR)\s[B-Z]/)
28
- @is_variant = true if specific_issue_patterns(hash[:title])
29
- @is_variant = false if @is_variant.nil?
30
- return @is_variant
31
- end
32
-
33
- def is_issue?
34
- return @is_issue unless @is_issue.nil?
35
- if specific_issue_patterns(hash[:title])
36
- @is_issue = true
37
- elsif is_variant?
38
- @is_issue = false
39
- elsif is_collection?
40
- @is_issue = false
41
- elsif is_merch?
42
- @is_issue = false
43
- else
44
- @is_issue = true
45
- end
46
- return @is_issue
47
- end
48
-
49
- def is_collection?
50
- return @is_collection unless @is_collection.nil?
51
- @is_collection = true if hash[:title].include?(" GN ")
52
- @is_collection = true if hash[:title].include?(" TP ")
53
- @is_collection = true if hash[:title].match(/\s(VOL)\s\d+/)
54
- @is_collection = false if hash[:title].match(/\s[#]\d+/)
55
- @is_collection = false if @is_collection.nil?
56
- return @is_collection
57
- end
58
-
59
- def is_merch?
60
- return @is_merch unless @is_merch.nil?
61
- case hash[:creators]
62
- when ""
63
- @is_merch = true
64
- else
65
- @is_merch = false
66
- end
67
- return @is_merch
68
- end
69
-
70
- private
71
-
72
- def strict_issue_title_matcher(title)
73
- /^(#{title})\s[#]/
74
- end
75
-
76
- def specific_issue_patterns(title)
77
- title.match(/(CVR)\s[A]/) ||
78
- title.match(strict_issue_title_matcher("RED SONJA")) ||
79
- title.match(strict_issue_title_matcher("VAMPIRELLA")) ||
80
- title.match(strict_issue_title_matcher("ARMY OF DARKNESS VS HACK SLASH")) ||
81
- split_issue_patterns(title)
82
- end
83
-
84
- def split_issue_patterns(title)
85
- return nil unless title.split("#")[1]
86
- title.split("#")[1].match(/\d\D+(PTG)/) ||
87
- title.split('#')[1].match(/(REORDER ED)/) ||
88
- title.split('#')[1].match(/(SKETCH ED)/) ||
89
- title.split('#')[1].match(/(FOIL CVR)/) ||
90
- title.split("#")[1].include?("VAR INCENTIVE CVR") ||
91
- title.split("#")[1].include?("DIRECT MARKET CVR") ||
92
- title.split("#")[1].include?("MAIN CVRS")
93
- end
94
- end
95
- end
@@ -1,68 +0,0 @@
1
- module CbNitride
2
- class TitleFormatter
3
-
4
- attr_accessor :raw_title
5
-
6
- #TODO: This really only works for variants and issues.
7
-
8
- def initialize(raw_title)
9
- @raw_title = raw_title
10
- end
11
-
12
- LONG_PAREN_OF_PATTERN = /[(].*[Oo][fF].*\d+.*[)]/
13
-
14
- def series_title
15
- @_series_title ||=
16
- if clean_title.include? "#"
17
- clean_title.split("#").first.strip
18
- end
19
- end
20
-
21
- def special_number
22
- @_special_number ||=
23
- match = clean_title.match(/#\S+/).to_s.gsub('#', '').strip
24
- if match.nil? || match.empty?
25
- nil
26
- else
27
- match
28
- end
29
- end
30
-
31
- def issue_number
32
- @_issue_number ||=
33
- match = clean_title.match(/#\d+/).to_s.gsub('#', '').strip
34
- if match.nil? || match.empty?
35
- nil
36
- else
37
- match.to_i
38
- end
39
- end
40
-
41
- def limited_series_max_issue
42
- @_limited_series_max_issue ||=
43
- if clean_title.match(LONG_PAREN_OF_PATTERN)
44
- clean_long_paren_of_text
45
- else
46
- nil
47
- end
48
- end
49
-
50
- def variant_description
51
- @_variant_description ||=
52
- array = clean_title.split(/#\S+/)
53
- return nil if array.size == 1
54
- string = array.last.gsub(LONG_PAREN_OF_PATTERN, '').strip
55
- string.empty? ? nil : string
56
- end
57
-
58
- def clean_long_paren_of_text
59
- clean_title.match(LONG_PAREN_OF_PATTERN).to_s.match(/\d+/).to_s.strip.to_i
60
- end
61
-
62
- def clean_title
63
- @_clean_title ||=
64
- raw_title.gsub(/[(][C].*[)]?/, '').gsub('(MR)', '').gsub('(NET)', '').strip
65
- end
66
-
67
- end
68
- end
@@ -1,61 +0,0 @@
1
- require_relative '../test_helper'
2
-
3
- class DiamondItemTest < MiniTest::Unit::TestCase
4
- def specific_issue
5
- @_type ||= CbNitride::DiamondItem.new(
6
- {
7
- category_code: "1",
8
- title: "RED SONJA #12 SECOND CVR"
9
- }).product_type?
10
- end
11
-
12
- def main_cvrs_check
13
- @_type ||= CbNitride::DiamondItem.new(
14
- {
15
- category_code: "1",
16
- title: "SOMETHING SOMETHING #20 MAIN CVRS"
17
- }).product_type?
18
- end
19
-
20
- def ideal_collection
21
- @_ideal_collection ||= CbNitride::DiamondItem.new(
22
- {
23
- category_code: "3",
24
- title: "BATTLING BOY HC GN"
25
- }).product_type?
26
- end
27
-
28
- def ideal_merchandise
29
- @_ideal_merchandise ||= CbNitride::DiamondItem.new(
30
- {
31
- category_code: "16",
32
- title: "ADV TIME MARCELINE NAME ONLY PX JRS RAGLAN LG (C: 0-1-0)"
33
- }).product_type?
34
- end
35
-
36
- def ideal_variant
37
- @_ideal_variant ||= CbNitride::DiamondItem.new(
38
- {
39
- category_code: "1",
40
- title: "SANDMAN OVERTURE #1 (OF 6) CVR B (MR)"
41
- }).product_type?
42
- end
43
-
44
- def ideal_issue
45
- @_ideal_issue ||= CbNitride::DiamondItem.new(
46
- {
47
- category_code: "1",
48
- title: "SANDMAN OVERTURE #1 (OF 6) CVR A (MR)"
49
- }).product_type?
50
- end
51
-
52
- def test_that_they_are_the_right_items
53
- assert_equal :issue, specific_issue
54
- assert_equal :issue, main_cvrs_check
55
- assert_equal :issue, ideal_issue
56
- assert_equal :variant, ideal_variant
57
- assert_equal :collection, ideal_collection
58
- assert_equal :merchandise, ideal_merchandise
59
- end
60
-
61
- end