cb_nitride 0.0.15 → 0.0.16

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: 2995dfe946e9b56942d503dc3ef8e60e436a14aa
4
- data.tar.gz: aec2edb263447f6be637d984d9fcf4694df4db59
3
+ metadata.gz: 12973fe1a33d9c54223ba2b7d87cd35603d9f4b2
4
+ data.tar.gz: 215c085a8fbc26a068e0ca59f3068b5b7a3edd19
5
5
  SHA512:
6
- metadata.gz: 57f30ac2f8ec244bdb2f1bb3eea870e74a9fcb1b357802afca3806b3bc109478a025bcf8b628335180e60d898035ca2318df6363d25e75bc67d70c25e6cf2aca
7
- data.tar.gz: 463d4627acb9911c1a626860414f9b10c86fbab4673836fbac324b03cf8276f06ecffebcd94624a15e1f1bf834d4fbe25e1d12a52bf3c2c2d23b236ee867d423
6
+ metadata.gz: 19688eb3a9fa80ff2214ab3225264b0411ecb9722aa8103d4c624d40058cc8dd1e1c50f9919667e85740c404851d1c3e27d19d7272a62ecb4f0861ebd37b0482
7
+ data.tar.gz: 4ff6384a19643717c5cec0f75ed3cb5f4d8de796962e8fd1433713d5fe29f517168b5bc3553f2fa753b25e6d473c8dc87dd480980bb918adf7e6d59e4128dea8
@@ -1,11 +1,11 @@
1
1
  module CbNitride
2
2
  class DiamondItem
3
3
 
4
- attr_reader :state, :diamond_number, :title, :stock_number, :image_url, :publisher, :creators, :description, :release_date, :price, :category_code, :errors
4
+ attr_reader :state, :diamond_number, :stock_number, :image_url, :publisher, :creators, :description, :release_date, :price, :category_code, :errors, :raw_title
5
5
 
6
6
  def initialize(options = {})
7
7
  @state = options[:state]
8
- @title = options[:title]
8
+ @raw_title = options[:title]
9
9
  @diamond_number = options[:diamond_number]
10
10
  @stock_number = options[:stock_number]
11
11
  @image_url = options[:image_url]
@@ -30,6 +30,26 @@ module CbNitride
30
30
  @_cover_artist ||= creators_hash["CA"]
31
31
  end
32
32
 
33
+ def title
34
+ title_formatter.clean_title
35
+ end
36
+
37
+ def special_number
38
+ title_formatter.special_number
39
+ end
40
+
41
+ def issue_number
42
+ title_formatter.issue_number
43
+ end
44
+
45
+ def limited_series_max_issue
46
+ title_formatter.limited_series_max_issue
47
+ end
48
+
49
+ def variant_description
50
+ title_formatter.variant_description
51
+ end
52
+
33
53
  def product_type?
34
54
  return :issue if is_issue?
35
55
  return :variant if is_variant?
@@ -68,6 +88,10 @@ module CbNitride
68
88
  @_creators_hash = hash
69
89
  end
70
90
 
91
+ def title_formatter
92
+ @_formatted_title ||= TitleFormatter.new(raw_title)
93
+ end
94
+
71
95
  def is_collection?
72
96
  @_is_collection ||= CategorySorter::COLLECTION_CODE == category_code
73
97
  end
@@ -31,8 +31,8 @@ module CbNitride
31
31
  end
32
32
 
33
33
  def brute_force_formatted_numbers
34
- year_codes.map do |year|
35
- month_codes.map do |month|
34
+ year_range.map do |year|
35
+ month_range.map do |month|
36
36
  generate_numbers(year, month)
37
37
  end
38
38
  end
@@ -0,0 +1,47 @@
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
+ OF_PATTERN = /[(].*[Oo][fF].*\d+.*[)]/
13
+ def series_title
14
+ @_series_title ||=
15
+ if clean_title.include? "#"
16
+ clean_title.split("#").first.strip
17
+ end
18
+ end
19
+
20
+ def special_number
21
+ @_special_number ||= clean_title.match(/#\S+/).to_s.gsub('#', '').strip
22
+ end
23
+
24
+ def issue_number
25
+ @_issue_number ||= clean_title.match(/#\d+/).to_s.gsub('#', '').strip.to_i
26
+ end
27
+
28
+ def limited_series_max_issue
29
+ @_limited_series_max_issue ||=
30
+ num = clean_title.match(OF_PATTERN).to_s.match(/\d+/).to_s.strip
31
+ num.empty? ? nil : num.to_i
32
+ end
33
+
34
+ def variant_description
35
+ @_variant_description ||=
36
+ array = clean_title.split(/#\S+/)
37
+ return nil if array.size == 1
38
+ string = array.last.gsub(OF_PATTERN, '').strip
39
+ string.empty? ? nil : string
40
+ end
41
+
42
+ def clean_title
43
+ @_clean_title ||= raw_title.gsub(/[(][C].*[)]/, '').gsub('(MR)', '').gsub('(NET)', '').strip
44
+ end
45
+
46
+ end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module CbNitride
2
- VERSION = "0.0.15"
2
+ VERSION = "0.0.16"
3
3
  end
data/lib/cb_nitride.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'pry'
2
1
  require "cb_nitride/version"
3
2
  require "cb_nitride/exceptions"
4
3
  require "cb_nitride/module_methods"
@@ -10,6 +9,7 @@ require "cb_nitride/private_hasher"
10
9
  require "cb_nitride/category_sorter"
11
10
  require "cb_nitride/diamond_item"
12
11
  require "cb_nitride/diamond_number_generator"
12
+ require "cb_nitride/title_formatter"
13
13
 
14
14
  module CbNitride
15
15
  def self.item(diamond_number, options = {})
@@ -44,17 +44,14 @@ module CbNitride
44
44
  end
45
45
 
46
46
  def self.scrape_all!
47
- generate_diamond_numbers.map do |year_scope|
48
- year_scope.each do |month|
49
- month.each do |diamond_number|
50
- diamond_item = item(diamond_number)
51
- if diamond_item.nil?
52
- binding.pry
53
- else
54
- puts "Recorded #{diamond_item.title} (#{diamond_number})"
55
- diamond_item
56
- end
57
- end
47
+ generate_diamond_numbers.flatten.map do |diamond_number|
48
+ diamond_item = item(diamond_number)
49
+ if diamond_item.nil?
50
+ puts "invalid diamond Item"
51
+ next
52
+ else
53
+ puts "Recorded #{diamond_item.title} (#{diamond_number})"
54
+ diamond_item
58
55
  end
59
56
  end.flatten
60
57
  end
@@ -0,0 +1,63 @@
1
+ require_relative '../test_helper'
2
+
3
+ class CbNitride::TitleFormatterTest < MiniTest::Unit::TestCase
4
+
5
+ def issue
6
+ @_issue ||= CbNitride::TitleFormatter.new('GREEN LANTERN #17')
7
+ end
8
+
9
+ def variant
10
+ @_variant ||= CbNitride::TitleFormatter.new('GREEN LANTERN #17 CVR B ZAYAS')
11
+ end
12
+
13
+ def unclean
14
+ @_unclean ||= CbNitride::TitleFormatter.new('GREEN LANTERN #17 (MR) (NET) (C: 1-0-1)')
15
+ end
16
+
17
+ def special_number
18
+ @_special_number ||= CbNitride::TitleFormatter.new('AGE OF ULTRON #10AI CVR B')
19
+ end
20
+
21
+ def limited_series
22
+ @_limited_series ||= CbNitride::TitleFormatter.new('GREEN LANTERN: EMERALD KNIGHTS #4 (OF 6) B CVR')
23
+ end
24
+
25
+ def test_clean_string
26
+ assert_equal "GREEN LANTERN #17", unclean.clean_title
27
+ end
28
+
29
+ def test_issue_number
30
+ assert_equal 17, issue.issue_number
31
+ assert_equal 17, variant.issue_number
32
+ assert_equal 10, special_number.issue_number
33
+ assert_equal 4, limited_series.issue_number
34
+ end
35
+
36
+ def test_special_number
37
+ assert_equal '17', issue.special_number
38
+ assert_equal '17', variant.special_number
39
+ assert_equal '10AI', special_number.special_number
40
+ assert_equal '4', limited_series.special_number
41
+ end
42
+
43
+ def test_limited_series_max_issue
44
+ assert_equal nil, issue.limited_series_max_issue
45
+ assert_equal nil, variant.limited_series_max_issue
46
+ assert_equal nil, special_number.limited_series_max_issue
47
+ assert_equal 6, limited_series.limited_series_max_issue
48
+ end
49
+
50
+ def test_variant_description
51
+ assert_equal nil, issue.variant_description
52
+ assert_equal "CVR B ZAYAS", variant.variant_description
53
+ assert_equal "CVR B", special_number.variant_description
54
+ assert_equal "B CVR", limited_series.variant_description
55
+ end
56
+
57
+ def series_title
58
+ assert_equal "GREEN LANTERN", issue.series_title
59
+ assert_equal "GREEN LANTERN", variant.series_title
60
+ assert_equal "AGE OF ULTRON", special_number.series_title
61
+ assert_equal "GREEN LANTERN: EMERALD KNIGHTS", limited_series.series_title
62
+ end
63
+ 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.0.15
4
+ version: 0.0.16
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-07-28 00:00:00.000000000 Z
11
+ date: 2013-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -90,6 +90,7 @@ files:
90
90
  - lib/cb_nitride/module_methods.rb
91
91
  - lib/cb_nitride/private_hasher.rb
92
92
  - lib/cb_nitride/public_hasher.rb
93
+ - lib/cb_nitride/title_formatter.rb
93
94
  - lib/cb_nitride/version.rb
94
95
  - test/cassettes/test_that_it_can_log_in_cassette.yml
95
96
  - test/cassettes/test_that_it_fails_with_bad_information_cassette.yml
@@ -117,6 +118,7 @@ files:
117
118
  - test/unit/private_hasher_test.rb
118
119
  - test/unit/public_hasher_test.rb
119
120
  - test/unit/pull_test.rb
121
+ - test/unit/title_formatter_test.rb
120
122
  homepage: http://github.com/alxjrvs
121
123
  licenses:
122
124
  - MIT
@@ -168,3 +170,4 @@ test_files:
168
170
  - test/unit/private_hasher_test.rb
169
171
  - test/unit/public_hasher_test.rb
170
172
  - test/unit/pull_test.rb
173
+ - test/unit/title_formatter_test.rb