bart 0.0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 064df0969f562719437960c515e557b247f92781
4
+ data.tar.gz: 3d43ab3da80a0ec6edcfb1eecf567ee5bf2d6187
5
+ SHA512:
6
+ metadata.gz: 4029542cec61b7a4be2b4e79f721fd7975844905963ff46ea116846a06eb8d7d1b3d411bbd03a21ec7e9dc634da8b44f04e6ae5b436a26a5e415f69664f99fd4
7
+ data.tar.gz: 4348728bf67614008a5117681fbf72679b56b61adeedabbc0dcf4eee7696721c1376f807b7fa622bc3ac91064f70f25ba4d7152e8d884242e0670c7ce82d2b95
@@ -0,0 +1,5 @@
1
+ require 'bart/station'
2
+
3
+ def Bart(options = {})
4
+ Bart::Station.new(options)
5
+ end
@@ -11,9 +11,13 @@ module Bart
11
11
  abbr = document.css('abbreviation').text
12
12
  estimates = document.css('estimate')
13
13
 
14
- @destination = Station.new(abbr)
14
+ @destination = Station.new(abbr: abbr)
15
15
  @estimates = estimates.inject([]) { |memo, i| memo << Estimate.new(i.to_s) }
16
16
  end
17
17
 
18
+ def to_s
19
+ "#{destination.name} #{estimates.map(&:minutes) * ', '}"
20
+ end
21
+
18
22
  end
19
23
  end
@@ -14,7 +14,6 @@ module Bart
14
14
  class Station
15
15
 
16
16
  attr_reader :abbr
17
- attr_accessor :departures
18
17
 
19
18
  # DEBUG
20
19
  attr_reader :document
@@ -22,8 +21,8 @@ module Bart
22
21
  # OPTIMIZE If we have one station object, we don't need to initialize
23
22
  # new ones over and over again. We'll leave it alone for now, for
24
23
  # simplicity.
25
- def initialize(abbr)
26
- @abbr = abbr.downcase
24
+ def initialize(options = {})
25
+ @abbr = options[:abbr] ? options[:abbr].downcase : nil
27
26
  end
28
27
 
29
28
  def self.from_xml(xml)
@@ -43,14 +42,23 @@ module Bart
43
42
  ID_TO_NAME[abbr]
44
43
  end
45
44
 
45
+ def departures
46
+ return @_departures if defined?(@_departures);
47
+ @_departures = load_departures
48
+ end
49
+
46
50
  # fetch
47
- def load_departures
51
+ def load_departures(query_params = {})
48
52
  params = {
49
53
  :cmd => 'etd',
50
54
  :orig => @abbr,
51
55
  :key => 'MW9S-E7SL-26DU-VV8V'
52
56
  }
53
57
 
58
+ [:plat, :dir].each do |param|
59
+ params[param] = query_params[param] if query_params.include?(param)
60
+ end
61
+
54
62
  query_string = '?' + params.map { |key, value| [key, value] * '=' } * '&'
55
63
  ssan_etd = Net::HTTP::Get.new('/api/etd.aspx' + query_string )
56
64
 
@@ -58,13 +66,13 @@ module Bart
58
66
  http.request(ssan_etd)
59
67
  end
60
68
 
61
- store_departures(response.body)
69
+ parse_departures(response.body)
62
70
  end
63
71
 
64
- def store_departures(xml)
72
+ def parse_departures(xml)
65
73
  document = Nokogiri::XML.parse(xml)
66
74
  @document = document
67
- @departures = document.css('etd').inject([]) do |memo, i|
75
+ document.css('etd').inject([]) do |memo, i|
68
76
  memo << Etd.new(i.to_s)
69
77
  end
70
78
  end
metadata CHANGED
@@ -1,79 +1,76 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bart
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.2'
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Josh Lubaway
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2010-11-13 00:00:00 -06:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2010-11-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: nokogiri
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
31
20
  type: :runtime
32
- version_requirements: *id001
33
- description:
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fakeweb
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ description: Access the Bay Area Rapid Transit API in Ruby.
34
42
  email: josh.lubaway@gmail.com
35
43
  executables: []
36
-
37
44
  extensions: []
38
-
39
45
  extra_rdoc_files: []
40
-
41
- files:
46
+ files:
47
+ - lib/bart.rb
42
48
  - lib/bart/estimate.rb
43
49
  - lib/bart/etd.rb
44
- - lib/bart/station/list.rb
45
50
  - lib/bart/station.rb
46
- has_rdoc: true
51
+ - lib/bart/station/list.rb
47
52
  homepage: https://github.com/jish/bart
48
- licenses: []
49
-
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
50
56
  post_install_message:
51
57
  rdoc_options: []
52
-
53
- require_paths:
58
+ require_paths:
54
59
  - lib
55
- required_ruby_version: !ruby/object:Gem::Requirement
56
- none: false
57
- requirements:
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
58
62
  - - ">="
59
- - !ruby/object:Gem::Version
60
- segments:
61
- - 0
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
66
67
  - - ">="
67
- - !ruby/object:Gem::Version
68
- segments:
69
- - 0
70
- version: "0"
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
71
70
  requirements: []
72
-
73
71
  rubyforge_project:
74
- rubygems_version: 1.3.7
72
+ rubygems_version: 2.2.2
75
73
  signing_key:
76
- specification_version: 3
74
+ specification_version: 4
77
75
  summary: A ruby wrapper around the BART API.
78
76
  test_files: []
79
-