cb_nitride 0.0.15 → 0.0.16

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