beer_in_the_evening 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4e465b2059ff3fea2bf15c8beee1a391885467fb
4
+ data.tar.gz: ea7d2d9416a18b58c41e12635f47c7418e106142
5
+ SHA512:
6
+ metadata.gz: 9dbcac1fe3813b633b565937b9c4e62cead4a55a88b35cef96a79e5058eec29c44ae8e9b989978c0c4de5144e6d013fa5440bdc2152c80cbaa4b8811a25b2b1d
7
+ data.tar.gz: 25411ef566fd3f40ddb4ddbee4a87e80793209822e183ba8424be49e067185446e16c12763a66358826bf81dbbfce4d5015516843b2481a4944918ce071fac3c
@@ -20,4 +20,5 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_runtime_dependency "nokogiri"
22
22
  s.add_runtime_dependency "null_logger"
23
+ s.add_development_dependency "rake"
23
24
  end
data/bin/bite ADDED
@@ -0,0 +1,32 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'beer_in_the_evening'
4
+ require 'optparse'
5
+
6
+ require 'logger'
7
+
8
+ search = BeerInTheEvening::Search.new
9
+
10
+ OptionParser.new do |opts|
11
+ opts.banner = "Usage: bite [options]"
12
+
13
+ opts.on("--minimum RATING", "Minimum rating to accept") do |r|
14
+ search.minimum_rating = r.to_i
15
+ end
16
+
17
+ opts.on("--results NUMBER", "Number of results to return") do |r|
18
+ search.maximum_results = r.to_i
19
+ end
20
+
21
+ opts.on("-p", "--postcode POSTCODE", "Select near postcode") do |p|
22
+ search.postcode = p
23
+ end
24
+
25
+ opts.on("-r", "--random", "Sort results randomly") do |r|
26
+ search.sort_by = proc { |r| rand }
27
+ end
28
+ end.parse!
29
+
30
+ search.each do |pub|
31
+ puts pub.to_s
32
+ end
@@ -16,9 +16,12 @@ module BeerInTheEvening
16
16
  attr_accessor :maximum_results
17
17
 
18
18
  attr_accessor :logger
19
+ attr_accessor :sort_by
19
20
 
20
21
  def initialize options = {}
21
22
  self.logger = options[:logger] || NullLogger.instance
23
+ self.sort_by = proc { |r| -r.rating }
24
+ self.maximum_results = 100
22
25
  end
23
26
 
24
27
  def number_of_results
@@ -28,24 +31,25 @@ module BeerInTheEvening
28
31
 
29
32
  def each &block
30
33
  current_page = 0
31
- results_total = 0
34
+ results = []
32
35
  loop do
33
36
  logger.debug "Finding next set of results"
34
- results = results_on_page current_page
35
- break if results.empty?
37
+ page_results = results_on_page current_page
38
+ break if page_results.empty?
36
39
  if maximum_results
37
- while results_total + results.size > maximum_results do
38
- logger.debug "Trimming results. Max = #{maximum_results}, Current = #{results_total + results.size}"
39
- results.pop
40
+ while results.size + page_results.size > maximum_results do
41
+ logger.debug "Trimming results. Max = #{maximum_results}, Current = #{results.size + page_results.size}"
42
+ page_results.pop
40
43
  end
41
44
  end
42
- logger.debug "Yielding #{results.size} pubs to client"
43
- results.each &block
44
- logger.debug "Client code finished"
45
45
  current_page += 1
46
- results_total += results.size
47
- break if maximum_results && results_total >= maximum_results
46
+ results += page_results
47
+ break if maximum_results && results.size >= maximum_results
48
48
  end
49
+ logger.debug "Yielding #{results.size} pubs to client"
50
+ results.sort_by! &sort_by
51
+ results.each &block
52
+ logger.debug "Client code finished"
49
53
  end
50
54
  include Enumerable
51
55
 
@@ -1,3 +1,3 @@
1
1
  module BeerInTheEvening
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,60 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beer_in_the_evening
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
5
- prerelease:
4
+ version: 0.0.7
6
5
  platform: ruby
7
6
  authors:
8
7
  - Craig R Webster
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
11
+ date: 2014-10-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: nokogiri
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: null_logger
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
44
53
  - !ruby/object:Gem::Version
45
54
  version: '0'
46
55
  description: Search over the Beer In The Evening site looking for suitable pubs
47
56
  email:
48
57
  - craig@barkingiguana.com
49
- executables: []
58
+ executables:
59
+ - bite
50
60
  extensions: []
51
61
  extra_rdoc_files: []
52
62
  files:
53
- - .gitignore
63
+ - ".gitignore"
54
64
  - Gemfile
55
65
  - README.md
56
66
  - Rakefile
57
67
  - beer_in_the_evening.gemspec
68
+ - bin/bite
58
69
  - examples/near_holborn.rb
59
70
  - examples/near_postcode.rb
60
71
  - lib/beer_in_the_evening.rb
@@ -65,26 +76,25 @@ files:
65
76
  - lib/beer_in_the_evening/version.rb
66
77
  homepage: ''
67
78
  licenses: []
79
+ metadata: {}
68
80
  post_install_message:
69
81
  rdoc_options: []
70
82
  require_paths:
71
83
  - lib
72
84
  required_ruby_version: !ruby/object:Gem::Requirement
73
- none: false
74
85
  requirements:
75
- - - ! '>='
86
+ - - ">="
76
87
  - !ruby/object:Gem::Version
77
88
  version: '0'
78
89
  required_rubygems_version: !ruby/object:Gem::Requirement
79
- none: false
80
90
  requirements:
81
- - - ! '>='
91
+ - - ">="
82
92
  - !ruby/object:Gem::Version
83
93
  version: '0'
84
94
  requirements: []
85
95
  rubyforge_project: beer_in_the_evening
86
- rubygems_version: 1.8.24
96
+ rubygems_version: 2.2.2
87
97
  signing_key:
88
- specification_version: 3
98
+ specification_version: 4
89
99
  summary: Is it pub time?
90
100
  test_files: []