ratebeer 0.0.6 → 0.0.7

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ratebeer/search.rb +32 -16
  3. metadata +15 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4acd68a610e33bdcc82f48780aed8801323be877
4
- data.tar.gz: 252655f3d27d24017463de38230af9ecfa88e870
3
+ metadata.gz: 198f454e82dd615533be5fd7c072d927fe5a4707
4
+ data.tar.gz: b33d1f4a7a4b785c8f761203e26e90fa22b8d819
5
5
  SHA512:
6
- metadata.gz: 03ccf54c201e0842297689c7c5f4bc93e2b528bfab19b75f9fc44b8dd4fff8066e104302b759320241c2f3b4e0ef7bb960870c62767ea1548e34f85bf3a9880c
7
- data.tar.gz: 724d9f2b5193536fd2e8fe9ae5d630d0f1dcee0083f59acb7df9e9d69ba50dd0aac9becedacf43f4ace814e06e06d5896d3d7af8ceacdf3410eea44c6bf4468d
6
+ metadata.gz: f6506eb20010e4f1a832cd8d5e3dacd39a8985f01bc4cdbaea24df7ef87a5ede577683e9851c895e6a957e003b93f2a348593833165c6a26f09d03005857fc5d
7
+ data.tar.gz: 2a3f6801fda1ed4864562eba0467b107b92318dde0b600eba94683ba4e59cce1166f1e4739e9ec6e256a2155fe270977130ab7b18dbb5c4c6e2e15e2a2e1c425
@@ -1,8 +1,9 @@
1
- require "i18n"
2
- require_relative "beer"
3
- require_relative "brewery"
4
- require_relative "scraping"
5
- require_relative "urls"
1
+ require 'i18n'
2
+ require 'thread'
3
+ require_relative 'beer'
4
+ require_relative 'brewery'
5
+ require_relative 'scraping'
6
+ require_relative 'urls'
6
7
 
7
8
  module RateBeer
8
9
 
@@ -142,18 +143,33 @@ module RateBeer
142
143
  # url and ID
143
144
  #
144
145
  def process_beers_table(table)
145
- table.css('tr').drop(1).map do |row|
146
- result = [:id, :name, :score, :ratings, :url].zip([nil]).to_h
147
- content = row.element_children.map { |x| fix_characters(x.text) }
148
- result[:name] = content.first
149
- result[:score], result[:ratings] = content.values_at(3, 4)
150
- .map { |n|
151
- n.nil? || n.empty? ? nil : n.to_i
152
- }
153
- result[:url] = row.at_css('a')['href']
154
- result[:id] = result[:url].split('/').last.to_i
155
- Beer.new(result[:id], name: result[:name])
146
+ beers = []
147
+ threads = []
148
+ mutex = Mutex.new
149
+ table.css('tr').drop(1).map do |r|
150
+ threads << Thread.new do
151
+ beer = process_beer_row(r)
152
+ mutex.synchronize { beers << beer }
153
+ end
154
+ end
155
+ threads.each(&:join)
156
+ beers
157
+ end
158
+
159
+ # Processes one row from a beer table.
160
+ def process_beer_row(row)
161
+ result = [:id, :name, :score, :ratings, :url].zip([nil]).to_h
162
+ content = row.element_children.map { |x| fix_characters(x.text) }
163
+ result[:name] = content.first
164
+ result[:score], result[:ratings] = content.values_at(3, 4)
165
+ .map do |n|
166
+ n.nil? || n.empty? ? nil : n.to_i
156
167
  end
168
+ result[:url] = row.at_css('a')['href']
169
+ result[:id] = result[:url].split('/').last.to_i
170
+ b = Beer.new(result[:id], name: result[:name])
171
+ b.brewery.name
172
+ b
157
173
  end
158
174
 
159
175
  # Amend search query string for better results
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ratebeer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Meakin
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: i18n
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: RateBeer provides a way to access beer & brewery data from RateBeer.com.
28
42
  email: dan@danmeakin.com
29
43
  executables: []