Class: Gem::Resolv::LOC::Coord
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | lib/rubygems/vendor/resolv/lib/resolv.rb | 
Overview
A Coord
Constant Summary
- 
    Regex =
    
 # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3287/^(\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’. 
Instance Method Summary
- #==(other) Internal use only
- #eql?(other) ⇒ Boolean Internal use only
- #hash Internal use only
- #inspect Internal use only
- #to_s Internal use only
Constructor Details
    .new(coordinates, orientation)  ⇒ Coord 
  
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3316
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/rubygems/vendor/resolv/lib/resolv.rb', line 3295
def self.create(arg) case arg when Coord return arg when String coordinates = '' if Regex =~ arg && $1.to_f < 180 m = $~ hemi = (m[4][/[NE]/]) || (m[4][/[SW]/]) ? 1 : -1 coordinates = [ ((m[1].to_i*(36e5)) + (m[2].to_i*(6e4)) + (m[3].to_f*(1e3))) * hemi+(2**31) ].pack("N") orientation = m[4][/[NS]/] ? '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/rubygems/vendor/resolv/lib/resolv.rb', line 3330
attr_reader :coordinates
#orientation (readonly)
The orientation of the hemisphere as ‘lat’ or ‘lon’
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3334
attr_reader :orientation
Instance Method Details
#==(other)
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3359
def ==(other) # :nodoc: return @coordinates == other.coordinates end
    #eql?(other)  ⇒ Boolean 
  
  
    This method is for internal use only.
  
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3363
def eql?(other) # :nodoc: return self == other end
#hash
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3367
def hash # :nodoc: return @coordinates.hash end
#inspect
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3355
def inspect # :nodoc: return "#<#{self.class} #{self}>" end
#to_s
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 3336
def to_s # :nodoc: c = @coordinates.unpack("N").join.to_i val = (c - (2**31)).abs fracsecs = (val % 1e3).to_i.to_s val = val / 1e3 secs = (val % 60).to_i.to_s val = val / 60 mins = (val % 60).to_i.to_s degs = (val / 60).to_i.to_s posi = (c >= 2**31) case posi when true hemi = @orientation[/^lat$/] ? "N" : "E" else hemi = @orientation[/^lon$/] ? "W" : "S" end return degs << " " << mins << " " << secs << "." << fracsecs << " " << hemi end