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 +4 -4
- data/lib/cb_nitride/diamond_item.rb +26 -2
- data/lib/cb_nitride/diamond_number_generator.rb +2 -2
- data/lib/cb_nitride/title_formatter.rb +47 -0
- data/lib/cb_nitride/version.rb +1 -1
- data/lib/cb_nitride.rb +9 -12
- data/test/unit/title_formatter_test.rb +63 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12973fe1a33d9c54223ba2b7d87cd35603d9f4b2
|
4
|
+
data.tar.gz: 215c085a8fbc26a068e0ca59f3068b5b7a3edd19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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, :
|
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
|
-
@
|
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
|
@@ -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
|
data/lib/cb_nitride/version.rb
CHANGED
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 |
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
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.
|
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-
|
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
|