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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: be48eaad4a6cd07eb30ca4bb8fe47a2e91133a7c
4
- data.tar.gz: ceb20dba52c27c606d3e41ae6c970304980e7cea
3
+ metadata.gz: e691c4936e5453b4ae339f5844a440e3427b4277
4
+ data.tar.gz: 7151b7ad03f3da331456bbb840f5e6f06fcbcdcb
5
5
  SHA512:
6
- metadata.gz: 227e05ac3f34011a196a7ca11e755b83acef9f2c90d4a8e2510baf19cf67c2aa01c0efcadc12fb97dbede1ba84ba074c92fcf0fb6f396af6aa0d293f07785c82
7
- data.tar.gz: 0351352e817f0f6300b52e9289b7237474071669d02c16e24f4a12965498f81838da2f224b1235af00e991a17b57abdaf30c6535d6800d3aea409e866730ae5d
6
+ metadata.gz: b7f1cc7c2e83a3741988341984ebdd1430f87bedf775c90c3698216af8f85ff1f9e9c779849d62e936ec792e2b39a7e60b52064f378f1342b1d3042e59feb6e2
7
+ data.tar.gz: ee1b4d9491e178caafd133c363d3558e3d57451e37bd845cd93e680cc8c2e65168221ae4cd458f412cc9e306995337072f66b4f8cc248ac38b5c24deb7be7877
data/.travis.yml CHANGED
@@ -1,11 +1,12 @@
1
+ sudo: false
1
2
  language: ruby
3
+ cache: bundler
2
4
  rvm:
5
+ - 2.1.10
6
+ - 2.2.7
7
+ - 2.3.4
3
8
  - 2.4.1
4
- cache:
5
- bundler: true
6
9
  env:
7
10
  - RAILS_ENV=test CI=true TRAVIS=true
8
- install:
9
- - bundle install
10
11
  script:
11
12
  - bundle exec rspec
@@ -62,7 +62,7 @@ module MetalArchives
62
62
  ##
63
63
  # :attr_reader: date_of_birth
64
64
  #
65
- # Returns +Date+
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&.load!
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&.load!
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 +Date+
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&.load!
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 == :id
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 == :id
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?(/^header_/)
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
- props[:date_formed] = Date.new content.to_i
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
- case dt.content
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
- break if dt.next_element.content == 'N/A'
36
- props[:address] = dt.next_element.content
39
+ props[:address] = content
37
40
  when 'Country:'
38
- break if dt.next_element.content == 'N/A'
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
- break if dt.next_element.content == 'N/A'
42
- props[:phone] = dt.next_element.content
43
+ props[:phone] = content
43
44
  when 'Status:'
44
- props[:status] = dt.next_element.content.downcase.tr(' ', '_').to_sym
45
+ props[:status] = content.downcase.tr(' ', '_').to_sym
45
46
  when 'Specialised in:'
46
- break if dt.next_element.content == 'N/A'
47
- props[:specializations] = ParserHelper.parse_genre dt.next_element.content
47
+ props[:specializations] = ParserHelper.parse_genre content
48
48
  when 'Founding date :'
49
- break if dt.next_element.content == 'N/A'
50
- props[:date_founded] = Date.new dt.next_element.content.to_i
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 dt.next_element.content == 'Yes'
58
+ if content == 'Yes'
55
59
  props[:online_shopping] = true
56
- elsif dt.next_element.content == 'No'
60
+ elsif content == 'No'
57
61
  props[:online_shopping] = false
58
62
  end
59
63
  else
@@ -4,5 +4,5 @@ module MetalArchives
4
4
  ##
5
5
  # MetalArchives API version
6
6
  #
7
- VERSION = '2.0.2'
7
+ VERSION = '2.1.0'
8
8
  end
@@ -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 Date.new(2006)
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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metal_archives
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Dejonckheere