metal_archives 2.0.2 → 2.1.0
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/.travis.yml +5 -4
- data/lib/metal_archives/models/artist.rb +3 -3
- data/lib/metal_archives/models/band.rb +2 -2
- data/lib/metal_archives/models/base_model.rb +2 -2
- data/lib/metal_archives/parsers/artist.rb +1 -1
- data/lib/metal_archives/parsers/band.rb +6 -1
- data/lib/metal_archives/parsers/label.rb +18 -14
- data/lib/metal_archives/version.rb +1 -1
- data/spec/models/band_spec.rb +1 -1
- data/spec/support/metal_archives.rb +9 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e691c4936e5453b4ae339f5844a440e3427b4277
|
4
|
+
data.tar.gz: 7151b7ad03f3da331456bbb840f5e6f06fcbcdcb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7f1cc7c2e83a3741988341984ebdd1430f87bedf775c90c3698216af8f85ff1f9e9c779849d62e936ec792e2b39a7e60b52064f378f1342b1d3042e59feb6e2
|
7
|
+
data.tar.gz: ee1b4d9491e178caafd133c363d3558e3d57451e37bd845cd93e680cc8c2e65168221ae4cd458f412cc9e306995337072f66b4f8cc248ac38b5c24deb7be7877
|
data/.travis.yml
CHANGED
@@ -62,7 +62,7 @@ module MetalArchives
|
|
62
62
|
##
|
63
63
|
# :attr_reader: date_of_birth
|
64
64
|
#
|
65
|
-
# Returns
|
65
|
+
# Returns rdoc-ref:NilDate
|
66
66
|
#
|
67
67
|
# [Raises]
|
68
68
|
# - rdoc-ref:MetalArchives::Errors::InvalidIDError when no or invalid id
|
@@ -224,7 +224,7 @@ module MetalArchives
|
|
224
224
|
#
|
225
225
|
def find!(id)
|
226
226
|
obj = find id
|
227
|
-
obj
|
227
|
+
obj && obj.load!
|
228
228
|
|
229
229
|
obj
|
230
230
|
end
|
@@ -277,7 +277,7 @@ module MetalArchives
|
|
277
277
|
#
|
278
278
|
def find_by!(query)
|
279
279
|
obj = find_by query
|
280
|
-
obj
|
280
|
+
obj && obj.load!
|
281
281
|
|
282
282
|
obj
|
283
283
|
end
|
@@ -292,7 +292,7 @@ module MetalArchives
|
|
292
292
|
# - +:exact+: +Boolean+
|
293
293
|
# - +:genre+: +String+
|
294
294
|
# - +:country+: +ISO366::Country+
|
295
|
-
# - +:year_formation+: rdoc-ref:Range of
|
295
|
+
# - +:year_formation+: rdoc-ref:Range of rdoc-ref:NilDate
|
296
296
|
# - +:comment+: +String+
|
297
297
|
# - +:status+: see rdoc-ref:Band.status
|
298
298
|
# - +:lyrical_themes+: +String+
|
@@ -342,7 +342,7 @@ module MetalArchives
|
|
342
342
|
#
|
343
343
|
def find_by!(query)
|
344
344
|
obj = find_by query
|
345
|
-
obj
|
345
|
+
obj && obj.load!
|
346
346
|
|
347
347
|
obj
|
348
348
|
end
|
@@ -113,13 +113,13 @@ module MetalArchives
|
|
113
113
|
|
114
114
|
# property
|
115
115
|
define_method(name) do
|
116
|
-
load! unless instance_variable_defined?("@#{name}") || name ==
|
116
|
+
load! unless instance_variable_defined?("@#{name}") || name ==(:id)
|
117
117
|
instance_variable_get("@#{name}")
|
118
118
|
end
|
119
119
|
|
120
120
|
# property?
|
121
121
|
define_method("#{name}?") do
|
122
|
-
load! unless instance_variable_defined?("@#{name}") || name ==
|
122
|
+
load! unless instance_variable_defined?("@#{name}") || name ==(:id)
|
123
123
|
|
124
124
|
property = instance_variable_get("@#{name}")
|
125
125
|
property.respond_to?(:empty?) ? !property.empty? : !!property
|
@@ -120,7 +120,7 @@ module MetalArchives
|
|
120
120
|
type = :official
|
121
121
|
|
122
122
|
doc.css('#linksTablemain tr').each do |row|
|
123
|
-
if row['id'].match
|
123
|
+
if row['id'].match /^header_/
|
124
124
|
type = row['id'].gsub(/^header_/, '').downcase.to_sym
|
125
125
|
else
|
126
126
|
a = row.css('td a').first
|
@@ -84,7 +84,12 @@ module MetalArchives
|
|
84
84
|
when 'Status:'
|
85
85
|
props[:status] = content.downcase.tr(' ', '_').to_sym
|
86
86
|
when 'Formed in:'
|
87
|
-
|
87
|
+
begin
|
88
|
+
dof = Date.parse content
|
89
|
+
props[:date_formed] = NilDate.new dof.year, dof.month, dof.day
|
90
|
+
rescue ArgumentError => e
|
91
|
+
props[:date_formed] = NilDate.parse content
|
92
|
+
end
|
88
93
|
when 'Genre:'
|
89
94
|
props[:genres] = parse_genre content
|
90
95
|
when 'Lyrical themes:'
|
@@ -30,30 +30,34 @@ module MetalArchives
|
|
30
30
|
|
31
31
|
doc.css('#label_info dl').each do |dl|
|
32
32
|
dl.search('dt').each do |dt|
|
33
|
-
|
33
|
+
content = sanitize(dt.next_element.content)
|
34
|
+
|
35
|
+
next if content == 'N/A'
|
36
|
+
|
37
|
+
case sanitize(dt.content)
|
34
38
|
when 'Address:'
|
35
|
-
|
36
|
-
props[:address] = dt.next_element.content
|
39
|
+
props[:address] = content
|
37
40
|
when 'Country:'
|
38
|
-
|
39
|
-
props[:country] = ParserHelper.parse_country dt.next_element.css('a').first.content
|
41
|
+
props[:country] = ParserHelper.parse_country css('a').first.content
|
40
42
|
when 'Phone number:'
|
41
|
-
|
42
|
-
props[:phone] = dt.next_element.content
|
43
|
+
props[:phone] = content
|
43
44
|
when 'Status:'
|
44
|
-
props[:status] =
|
45
|
+
props[:status] = content.downcase.tr(' ', '_').to_sym
|
45
46
|
when 'Specialised in:'
|
46
|
-
|
47
|
-
props[:specializations] = ParserHelper.parse_genre dt.next_element.content
|
47
|
+
props[:specializations] = ParserHelper.parse_genre content
|
48
48
|
when 'Founding date :'
|
49
|
-
|
50
|
-
|
49
|
+
begin
|
50
|
+
dof = Date.parse content
|
51
|
+
props[:date_founded] = NilDate.new dof.year, dof.month, dof.day
|
52
|
+
rescue ArgumentError => e
|
53
|
+
props[:date_founded] = NilDate.parse content
|
54
|
+
end
|
51
55
|
when 'Sub-labels:'
|
52
56
|
# TODO
|
53
57
|
when 'Online shopping:'
|
54
|
-
if
|
58
|
+
if content == 'Yes'
|
55
59
|
props[:online_shopping] = true
|
56
|
-
elsif
|
60
|
+
elsif content == 'No'
|
57
61
|
props[:online_shopping] = false
|
58
62
|
end
|
59
63
|
else
|
data/spec/models/band_spec.rb
CHANGED
@@ -10,7 +10,7 @@ RSpec.describe MetalArchives::Band do
|
|
10
10
|
expect(band.aliases).to be_empty
|
11
11
|
expect(band.country).to eq ISO3166::Country['PL']
|
12
12
|
expect(band.location).to eq 'Poznań'
|
13
|
-
expect(band.date_formed).to eq
|
13
|
+
expect(band.date_formed).to eq MetalArchives::NilDate.new(2006)
|
14
14
|
expect(band.date_active).to eq [MetalArchives::Range.new(Date.new(2006), nil)]
|
15
15
|
expect(band.status).to eq :active
|
16
16
|
expect(band.genres).to eq ['Symphonic Power']
|
@@ -8,6 +8,15 @@ MetalArchives.configure do |c|
|
|
8
8
|
c.app_version = MetalArchives::VERSION
|
9
9
|
c.app_contact = 'user@example.com'
|
10
10
|
|
11
|
+
if ENV.has_key? 'TRAVIS'
|
12
|
+
## Request throttling (optional, overrides defaults)
|
13
|
+
c.request_rate = 1
|
14
|
+
c.request_timeout = 3
|
15
|
+
end
|
16
|
+
|
17
|
+
## Connect additional Faraday middleware
|
18
|
+
# c.middleware = [MyMiddleware, MyOtherMiddleware]
|
19
|
+
|
11
20
|
## Custom cache size per object class (optional, overrides defaults)
|
12
21
|
# c.cache_size = 100
|
13
22
|
|