Class: Resolv::LOC::Coord
| Relationships & Source Files | |
| Inherits: | Object |
| Defined in: | lib/resolv.rb |
Overview
A Coord
Constant Summary
-
Regex =
# File 'lib/resolv.rb', line 2724/^(\d)\s(\d)\s(\d\.\d)\s([NESW])$/
Class Method Summary
-
.create(arg)
Creates a new
Coordfromargwhich may be: - .new(coordinates, orientation) ⇒ Coord constructor
Instance Attribute Summary
-
#coordinates
readonly
The raw coordinates.
-
#orientation
readonly
The orientation of the hemisphere as 'lat' or 'lon'.
Constructor Details
.new(coordinates, orientation) ⇒ Coord
# File 'lib/resolv.rb', line 2751
def initialize(coordinates,orientation) unless coordinates.kind_of?(String) raise ArgumentError.new("Coord must be a 32bit unsigned integer in hex format: #{coordinates.inspect}") end unless orientation.kind_of?(String) && orientation[/^lon$|^lat$/] raise ArgumentError.new('Coord expects orientation to be a String argument of "lat" or "lon"') end @coordinates = coordinates @orientation = orientation end
Class Method Details
.create(arg)
Creates a new Coord from arg which may be:
- LOC::Coord
-
returns
arg. - String
-
argmust match the Regex constant
# File 'lib/resolv.rb', line 2732
def self.create(arg)
case arg
when Coord
return arg
when String
coordinates = ''
if Regex =~ arg && $1<180
hemi = ($4[/([NE])/,1]) || ($4[/([SW])/,1]) ? 1 : -1
coordinates = [(($1.to_i*(36e5))($2.to_i*(6e4))($3.to_f*(1e3)))*hemi+(2**31)].pack("N")
(orientation ||= '') << $4[[/NS/],1] ? 'lat' : 'lon'
else
raise ArgumentError.new("not a properly formed Coord string: " + arg)
end
return Coord.new(coordinates,orientation)
else
raise ArgumentError.new("cannot interpret as Coord: #{arg.inspect}")
end
end
Instance Attribute Details
#coordinates (readonly)
The raw coordinates
# File 'lib/resolv.rb', line 2765
attr_reader :coordinates
#orientation (readonly)
The orientation of the hemisphere as 'lat' or 'lon'
# File 'lib/resolv.rb', line 2769
attr_reader :orientation