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 2677/^(\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 2704
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 2685
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 2718
attr_reader :coordinates
#orientation (readonly)
The orientation of the hemisphere as 'lat' or 'lon'
# File 'lib/resolv.rb', line 2722
attr_reader :orientation