metal_archives 2.0.2 → 2.1.0

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