tramtracker 0.0.3 → 0.0.4
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.
- data/README.md +17 -2
- data/bin/tramtracker +18 -10
- data/lib/formatters.rb +2 -0
- data/lib/formatters/polling_formatter.rb +46 -0
- data/lib/formatters/print_formatter.rb +17 -0
- data/lib/tramtracker.rb +13 -4
- data/tramtracker.gemspec +1 -1
- metadata +6 -3
data/README.md
CHANGED
@@ -7,13 +7,28 @@ A commandline tool for Melbourne's TramTracker
|
|
7
7
|
Installation
|
8
8
|
------------
|
9
9
|
|
10
|
-
|
10
|
+
```
|
11
|
+
gem install tramtracker
|
12
|
+
```
|
11
13
|
|
12
14
|
|
13
15
|
Basic usage
|
14
16
|
-----------
|
15
17
|
|
16
|
-
|
18
|
+
To simply print the next trams for a given stop:
|
19
|
+
```
|
20
|
+
tramtracker <stop-id>
|
21
|
+
```
|
22
|
+
|
23
|
+
To poll at a regular interval, use the -p option:
|
24
|
+
```
|
25
|
+
tramtracker -p <stop-id>
|
26
|
+
```
|
27
|
+
|
28
|
+
To see the help information, use the -h options:
|
29
|
+
```
|
30
|
+
tramtracker -h
|
31
|
+
```
|
17
32
|
|
18
33
|
|
19
34
|
Configuration
|
data/bin/tramtracker
CHANGED
@@ -1,14 +1,21 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
3
|
+
|
3
4
|
require 'optparse'
|
5
|
+
require 'tramtracker'
|
6
|
+
require 'formatters'
|
7
|
+
|
8
|
+
|
9
|
+
formatter_class = Formatters::PrintFormatter
|
10
|
+
dotfile = "#{ENV['HOME']}/.tramtracker"
|
11
|
+
|
4
12
|
|
5
13
|
optparse = OptionParser.new do |opts|
|
6
14
|
opts.banner = "Usage: tramtracker [options] <stop-id>"
|
7
15
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# end
|
16
|
+
opts.on('-p', '--poll', "Poll every 15 seconds") do
|
17
|
+
formatter_class = Formatters::PollingFormatter
|
18
|
+
end
|
12
19
|
|
13
20
|
opts.on('-h', '--help', 'Display this screen') do
|
14
21
|
puts opts
|
@@ -17,17 +24,18 @@ optparse = OptionParser.new do |opts|
|
|
17
24
|
end
|
18
25
|
optparse.parse!
|
19
26
|
|
27
|
+
|
20
28
|
id = ARGV[0]
|
21
|
-
dotfile = "#{ENV['HOME']}/.tramtracker"
|
22
29
|
id ||= File.read(dotfile) if File.exists?(dotfile)
|
23
|
-
|
24
30
|
unless id
|
25
31
|
puts optparse
|
26
32
|
exit 1
|
27
33
|
end
|
28
34
|
|
29
35
|
|
30
|
-
|
31
|
-
Tramtracker.new(id).
|
32
|
-
|
36
|
+
begin
|
37
|
+
formatter_class.new(Tramtracker.new(id)).report
|
38
|
+
rescue Interrupt
|
39
|
+
# Prevent the Exception stack trace from being printed upon ctrl-c
|
40
|
+
puts # This just puts the next prompt on its own line
|
33
41
|
end
|
data/lib/formatters.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
module Formatters
|
2
|
+
class PollingFormatter
|
3
|
+
|
4
|
+
KILL_LINE_CHAR = "\x1B[K"
|
5
|
+
CURSOR_UP_CHAR = "\x1B[A"
|
6
|
+
|
7
|
+
def initialize(tramtracker)
|
8
|
+
@tramtracker = tramtracker
|
9
|
+
@delay_interval = 15
|
10
|
+
@max_iterations = 60
|
11
|
+
end
|
12
|
+
|
13
|
+
def report
|
14
|
+
puts Time.now.strftime "[%H:%M:%S] Stop #{@tramtracker.stop_id}"
|
15
|
+
puts "Retrieving tram information..."
|
16
|
+
last_results_count = 0
|
17
|
+
@max_iterations.times do |iteration|
|
18
|
+
results = @tramtracker.get
|
19
|
+
clear(last_results_count + 2)
|
20
|
+
last_results_count = results.count
|
21
|
+
puts Time.now.strftime "[%H:%M:%S] Stop #{@tramtracker.stop_id}"
|
22
|
+
results.each do |tram|
|
23
|
+
printf "Route %3s arriving in %2s minutes\n",
|
24
|
+
tram[:route],
|
25
|
+
tram[:minutes]
|
26
|
+
end
|
27
|
+
delay @delay_interval
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def delay(seconds)
|
34
|
+
seconds.times do |i|
|
35
|
+
print "\rRetrieving again in #{seconds-i} seconds..."
|
36
|
+
sleep 1
|
37
|
+
end
|
38
|
+
print "\r#{KILL_LINE_CHAR}Retrieving again NOW...\n"
|
39
|
+
end
|
40
|
+
|
41
|
+
def clear(lines)
|
42
|
+
lines.times { print "#{CURSOR_UP_CHAR}#{KILL_LINE_CHAR}" }
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Formatters
|
2
|
+
class PrintFormatter
|
3
|
+
def initialize(tramtracker)
|
4
|
+
@tramtracker = tramtracker
|
5
|
+
end
|
6
|
+
|
7
|
+
def report
|
8
|
+
puts Time.now.strftime "[%H:%M:%S] Stop #{@tramtracker.stop_id}"
|
9
|
+
puts "Retrieving tram information..."
|
10
|
+
@tramtracker.get.each do |tram|
|
11
|
+
printf "Route %3s arriving in %2s minutes\n",
|
12
|
+
tram[:route],
|
13
|
+
tram[:minutes]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/tramtracker.rb
CHANGED
@@ -1,17 +1,26 @@
|
|
1
1
|
require 'open-uri'
|
2
2
|
|
3
3
|
class Tramtracker
|
4
|
+
attr_accessor :stop_id
|
5
|
+
|
4
6
|
def initialize(stop_id)
|
5
|
-
@
|
7
|
+
@stop_id = stop_id
|
6
8
|
end
|
7
9
|
|
8
10
|
def get
|
9
11
|
regex = /\d*\) Rte (\d*)<br>\r\n(\d*)/
|
10
|
-
open(
|
12
|
+
open(url).read.scan(regex).collect do |route, minutes|
|
11
13
|
{
|
12
|
-
:
|
13
|
-
:
|
14
|
+
route: route,
|
15
|
+
minutes: minutes
|
14
16
|
}
|
15
17
|
end
|
16
18
|
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def url
|
23
|
+
"http://www.tramtracker.com.au/?id=#{@stop_id}"
|
24
|
+
end
|
25
|
+
|
17
26
|
end
|
data/tramtracker.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "tramtracker"
|
7
|
-
gem.version = "0.0.
|
7
|
+
gem.version = "0.0.4"
|
8
8
|
gem.authors = ["Steven Occhipinti"]
|
9
9
|
gem.email = ["dev@stevenocchipinti.com"]
|
10
10
|
gem.description = "A commandline tool for Melbourne's TramTracker"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramtracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A commandline tool for Melbourne's TramTracker
|
15
15
|
email:
|
@@ -25,6 +25,9 @@ files:
|
|
25
25
|
- README.md
|
26
26
|
- Rakefile
|
27
27
|
- bin/tramtracker
|
28
|
+
- lib/formatters.rb
|
29
|
+
- lib/formatters/polling_formatter.rb
|
30
|
+
- lib/formatters/print_formatter.rb
|
28
31
|
- lib/tramtracker.rb
|
29
32
|
- test/lib/tramtracker_test.rb
|
30
33
|
- test/test_helper.rb
|
@@ -49,7 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
52
|
version: '0'
|
50
53
|
requirements: []
|
51
54
|
rubyforge_project:
|
52
|
-
rubygems_version: 1.8.
|
55
|
+
rubygems_version: 1.8.25
|
53
56
|
signing_key:
|
54
57
|
specification_version: 3
|
55
58
|
summary: CLI TramTracker
|