graticule 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.txt CHANGED
@@ -1,6 +1,8 @@
1
+ 0.1.3 (2007-02-14)
2
+ * fixed Google geocoder
3
+ * fixed CLI
1
4
 
2
-
3
- 0.1.2
5
+ 0.1.2 (2007-02-12)
4
6
  * added "geocode" executable. See "geocode --help" for more information
5
7
  * declared dependency on ActiveSupport
6
8
 
data/README.txt CHANGED
@@ -22,4 +22,8 @@ Graticule includes a command line interface (CLI).
22
22
 
23
23
  $ geocode -s yahoo -a yahookey Washington, DC
24
24
  Washington, DC US
25
- latitude: 38.895222, longitude: -77.036758
25
+ latitude: 38.895222, longitude: -77.036758
26
+
27
+ = Source
28
+
29
+ The source code for Graticule is available at http://source.collectiveidea.com/public/geocode/trunk
data/bin/geocode CHANGED
@@ -1,19 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
- #
3
- # This file was generated by RubyGems.
4
- #
5
- # The application 'geocode' is installed as part of a gem, and
6
- # this file is here to facilitate running it.
7
- #
8
2
 
9
- require 'rubygems'
10
- version = "> 0"
11
- if ARGV.size > 0 && ARGV[0][0]==95 && ARGV[0][-1]==95
12
- if Gem::Version.correct?(ARGV[0][1..-2])
13
- version = ARGV[0][1..-2]
14
- ARGV.shift
15
- end
16
- end
17
- require_gem 'graticule', version
3
+ require 'graticule'
18
4
 
19
- Graticule::Cli.start
5
+ Graticule::Cli.start ARGV
data/lib/graticule/cli.rb CHANGED
@@ -19,10 +19,10 @@ module Graticule
19
19
  # -h, --help Help
20
20
  class Cli
21
21
 
22
- def self.start
22
+ def self.start(args)
23
23
  options = { :service => :yahoo, :api_key => 'YahooDemo' }
24
24
 
25
- option_parser = OptionParser.new do |opts|
25
+ OptionParser.new do |opts|
26
26
  opts.banner = "Usage: geocode [options] location"
27
27
  opts.separator ""
28
28
  opts.separator "Options: "
@@ -37,8 +37,10 @@ module Graticule
37
37
  puts opts
38
38
  exit
39
39
  end
40
- end.parse!
40
+ end.parse! args
41
41
 
42
+ options[:location] = args.join(" ")
43
+
42
44
  result = Graticule.service(options[:service]).new(options[:api_key]).locate(options[:location])
43
45
  location = (result.is_a?(Array) ? result.first : result)
44
46
  if location
@@ -46,12 +48,11 @@ module Graticule
46
48
  else
47
49
  puts "Location not found"
48
50
  end
49
- rescue OptionParser::InvalidArgument => error
50
- $stderr.puts error.message
51
- rescue OptionParser::InvalidOption => error
52
- $stderr.puts error.message
53
51
  rescue Graticule::CredentialsError
54
52
  $stderr.puts "Invalid API key. Pass your #{options[:service]} API key using the -a option. "
53
+ rescue OptionParser::InvalidArgument, OptionParser::InvalidOption,
54
+ Graticule::Error => error
55
+ $stderr.puts error.message
55
56
  end
56
57
 
57
58
 
@@ -45,16 +45,19 @@ module Graticule
45
45
 
46
46
  # Extracts a Location from +xml+.
47
47
  def parse_response(xml) #:nodoc:
48
+ address = REXML::XPath.first(xml, '//xal:AddressDetails', 'xal' => "urn:oasis:names:tc:ciq:xsdschema:xAL:2.0")
49
+
48
50
  longitude, latitude, = xml.elements['/kml/Response/Placemark/Point/coordinates'].text.split(',').map { |v| v.to_f }
51
+
49
52
  Location.new \
50
- :street => text(xml.elements['/kml/Response/Placemark/AddressDetails/Country/AdministrativeArea/SubAdministrativeArea/Locality/Thoroughfare/ThoroughfareName']),
51
- :city => text(xml.elements['/kml/Response/Placemark/AddressDetails/Country/AdministrativeArea/SubAdministrativeArea/Locality/LocalityName']),
52
- :state => text(xml.elements['/kml/Response/Placemark/AddressDetails/Country/AdministrativeArea/AdministrativeAreaName']),
53
- :zip => text(xml.elements['/kml/Response/Placemark/AddressDetails/Country/AdministrativeArea/SubAdministrativeArea/Locality/PostalCode/PostalCodeNumber']),
54
- :country => text(xml.elements['/kml/Response/Placemark/AddressDetails/Country/CountryNameCode']),
53
+ :street => address.elements['Country/AdministrativeArea/SubAdministrativeArea/Locality/Thoroughfare/ThoroughfareName/text()'].value,
54
+ :city => address.elements['Country/AdministrativeArea/SubAdministrativeArea/Locality/LocalityName/text()'].value,
55
+ :state => address.elements['Country/AdministrativeArea/AdministrativeAreaName/text()'].value,
56
+ :zip => address.elements['Country/AdministrativeArea/SubAdministrativeArea/Locality/PostalCode/PostalCodeNumber/text()'].value,
57
+ :country => address.elements['Country/CountryNameCode/text()'].value,
55
58
  :latitude => latitude,
56
59
  :longitude => longitude,
57
- :precision => PRECISION[xml.elements['/kml/Response/Placemark/AddressDetails'].attribute('Accuracy').value.to_i] || :unknown
60
+ :precision => PRECISION[address.attribute('Accuracy').value.to_i] || :unknown
58
61
  end
59
62
 
60
63
  # Extracts and raises an error from +xml+, if any.
@@ -2,7 +2,7 @@ module Graticule #:nodoc:
2
2
  module Version #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 2
5
+ TINY = 3
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -1,4 +1,4 @@
1
- <kml>
1
+ <kml xmlns="http://earth.google.com/kml/2.0">
2
2
  <Response>
3
3
  <name>1600 amphitheatre mtn view ca</name>
4
4
  <Status>
@@ -9,7 +9,7 @@
9
9
  <address>
10
10
  1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
11
11
  </address>
12
- <AddressDetails Accuracy="8">
12
+ <AddressDetails xmlns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" Accuracy="8">
13
13
  <Country>
14
14
  <CountryNameCode>US</CountryNameCode>
15
15
  <AdministrativeArea>
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: graticule
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2007-02-12 00:00:00 -05:00
6
+ version: 0.1.3
7
+ date: 2007-02-14 00:00:00 -05:00
8
8
  summary: API for using all the popular geocoding services.
9
9
  require_paths:
10
10
  - lib
@@ -109,5 +109,5 @@ dependencies:
109
109
  requirements:
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 1.1.7
112
+ version: 1.2.0
113
113
  version: