cb_nitride 0.1.41 → 0.1.43

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: 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