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