geo_units 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +55 -0
 - data/VERSION +1 -1
 - data/geo_units.gemspec +4 -2
 - data/lib/geo_units/core_ext.rb +25 -3
 - data/lib/geo_units/numeric_ext.rb +0 -1
 - data/lib/geo_units.rb +86 -18
 - data/spec/geo_units/core_ext_spec.rb +17 -0
 - data/spec/geo_units_spec.rb +21 -0
 - metadata +15 -13
 
    
        data/README.textile
    CHANGED
    
    | 
         @@ -5,6 +5,61 @@ Distance unit functionality (conversions etc.) for Geo libraries. See specs for 
     | 
|
| 
       5 
5 
     | 
    
         
             
            This gem is used by the _geo_point_ and _geo_calc_ gems and perhaps by others. The aim is that it will contain most of the basic 
         
     | 
| 
       6 
6 
     | 
    
         
             
            distance unit functionality required by typical Geo projects.
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
            h2. Usage
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            in Gemfile:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            @gem 'geo_units'@
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Then run the bundler!
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            @$ bundle@
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            h2. GeoUnits API
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            <pre>GeoUnits.key(:foot) # will convert any kind of unit into one of (:feet, :meters, :kms, :miles, :radians)
         
     | 
| 
      
 21 
     | 
    
         
            +
            => :feet
         
     | 
| 
      
 22 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            <pre>GeoUnits.kms_to :meters, 5 # convert number of one distance unit to another unit
         
     | 
| 
      
 25 
     | 
    
         
            +
            => 5000  
         
     | 
| 
      
 26 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            h2. Core extensions API
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            <pre>2.radians_to(:kms)
         
     | 
| 
      
 31 
     | 
    
         
            +
            => 222.34  
         
     | 
| 
      
 32 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            <pre>@2.miles_to(:kms)
         
     | 
| 
      
 35 
     | 
    
         
            +
            => 3.21
         
     | 
| 
      
 36 
     | 
    
         
            +
            </pre>
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            h2. Dms Converter
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            module _GeoUnits::DmsConverter_ 
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            * parse_dms(string)
         
     | 
| 
      
 43 
     | 
    
         
            +
            * to_dms(deg, format = :dms, dp = nil)
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            h2. Numeric conversions
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            module _GeoUnits::NumericExt_
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            This module is included on the _Fixnum_ and _Float_ classes
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            * to_lat
         
     | 
| 
      
 52 
     | 
    
         
            +
            * to_lng
         
     | 
| 
      
 53 
     | 
    
         
            +
            * to_dms
         
     | 
| 
      
 54 
     | 
    
         
            +
            * to_lat_dms
         
     | 
| 
      
 55 
     | 
    
         
            +
            * to_lon_dms
         
     | 
| 
      
 56 
     | 
    
         
            +
            * to_rad
         
     | 
| 
      
 57 
     | 
    
         
            +
            * to_deg
         
     | 
| 
      
 58 
     | 
    
         
            +
            * normalize_lng
         
     | 
| 
      
 59 
     | 
    
         
            +
            * normalize_lat
         
     | 
| 
      
 60 
     | 
    
         
            +
            * normalize_deg(shift)
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       8 
63 
     | 
    
         
             
            h2. Contributing to geo_units
         
     | 
| 
       9 
64 
     | 
    
         | 
| 
       10 
65 
     | 
    
         
             
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.2. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.2.3
         
     | 
    
        data/geo_units.gemspec
    CHANGED
    
    | 
         @@ -5,11 +5,11 @@ 
     | 
|
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       7 
7 
     | 
    
         
             
              s.name = %q{geo_units}
         
     | 
| 
       8 
     | 
    
         
            -
              s.version = "0.2. 
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "0.2.3"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.authors = [%q{Kristian Mandrup}]
         
     | 
| 
       12 
     | 
    
         
            -
              s.date = %q{2011-06- 
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2011-06-22}
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.description = %q{Easily convert between different distance units such as kms, miles etc.}
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.email = %q{kmandrup@gmail.com}
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.extra_rdoc_files = [
         
     | 
| 
         @@ -31,8 +31,10 @@ Gem::Specification.new do |s| 
     | 
|
| 
       31 
31 
     | 
    
         
             
                "lib/geo_units/dms_converter.rb",
         
     | 
| 
       32 
32 
     | 
    
         
             
                "lib/geo_units/numeric_ext.rb",
         
     | 
| 
       33 
33 
     | 
    
         
             
                "spec/geo_units/converter_spec.rb",
         
     | 
| 
      
 34 
     | 
    
         
            +
                "spec/geo_units/core_ext_spec.rb",
         
     | 
| 
       34 
35 
     | 
    
         
             
                "spec/geo_units/dms_converter_spec.rb",
         
     | 
| 
       35 
36 
     | 
    
         
             
                "spec/geo_units/numeric_ext_spec.rb",
         
     | 
| 
      
 37 
     | 
    
         
            +
                "spec/geo_units_spec.rb",
         
     | 
| 
       36 
38 
     | 
    
         
             
                "spec/spec_helper.rb"
         
     | 
| 
       37 
39 
     | 
    
         
             
              ]
         
     | 
| 
       38 
40 
     | 
    
         
             
              s.homepage = %q{http://github.com/kristianmandrup/geo_units}
         
     | 
    
        data/lib/geo_units/core_ext.rb
    CHANGED
    
    | 
         @@ -1,10 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'sugar-high/numeric'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module GeoUnitExt
         
     | 
| 
      
 4 
     | 
    
         
            +
              ::GeoUnits.units.each do |unit|
         
     | 
| 
      
 5 
     | 
    
         
            +
                class_eval %{
         
     | 
| 
      
 6 
     | 
    
         
            +
                  def #{unit}_to unit
         
     | 
| 
      
 7 
     | 
    
         
            +
                    unit = GeoUnits.key(unit)                                   
         
     | 
| 
      
 8 
     | 
    
         
            +
                    (self.to_f / GeoUnits.meters_map[:#{unit}]) * GeoUnits.meters_map[unit]
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
                }
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              include NumberDslExt # from sugar-high
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def rpd
         
     | 
| 
      
 16 
     | 
    
         
            +
                self * GeoUnits.radians_per_degree
         
     | 
| 
      
 17 
     | 
    
         
            +
              end  
         
     | 
| 
      
 18 
     | 
    
         
            +
              alias_method :to_radians, :rpd
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       1 
21 
     | 
    
         
             
            class Fixnum
         
     | 
| 
       2 
     | 
    
         
            -
              include  
     | 
| 
      
 22 
     | 
    
         
            +
              include GeoUnitExt
         
     | 
| 
      
 23 
     | 
    
         
            +
              include ::GeoUnits::NumericExt   
         
     | 
| 
       3 
24 
     | 
    
         
             
            end
         
     | 
| 
       4 
25 
     | 
    
         | 
| 
       5 
26 
     | 
    
         
             
            class Float
         
     | 
| 
       6 
     | 
    
         
            -
              include  
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
              include GeoUnitExt
         
     | 
| 
      
 28 
     | 
    
         
            +
              include ::GeoUnits::NumericExt 
         
     | 
| 
      
 29 
     | 
    
         
            +
            end 
         
     | 
| 
       8 
30 
     | 
    
         | 
| 
       9 
31 
     | 
    
         
             
            class String  
         
     | 
| 
       10 
32 
     | 
    
         
             
              def parse_dms
         
     | 
    
        data/lib/geo_units.rb
    CHANGED
    
    | 
         @@ -11,8 +11,8 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
            # or fixed-width format without separators (eg 0033709W). Seconds and minutes may be omitted. 
         
     | 
| 
       12 
12 
     | 
    
         
             
            # (Note minimal validation is done).
         
     | 
| 
       13 
13 
     | 
    
         
             
            # 
         
     | 
| 
       14 
     | 
    
         
            -
            # @param    
     | 
| 
       15 
     | 
    
         
            -
            # @returns  
     | 
| 
      
 14 
     | 
    
         
            +
            # @param   [String|Number] Degrees or deg/min/sec in variety of formats
         
     | 
| 
      
 15 
     | 
    
         
            +
            # @returns [Number] Degrees as decimal number
         
     | 
| 
       16 
16 
     | 
    
         
             
            # @throws  ArgumentError
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
            require 'sugar-high/numeric'
         
     | 
| 
         @@ -22,15 +22,82 @@ module GeoUnits 
     | 
|
| 
       22 
22 
     | 
    
         
             
              autoload :DmsConverter,   'geo_units/dms_converter'
         
     | 
| 
       23 
23 
     | 
    
         
             
              autoload :NumericExt,     'geo_units/numeric_ext'
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              EARTH_RADIUS = { 
         
     | 
| 
      
 26 
     | 
    
         
            +
                :miles      => 3963.1676, 
         
     | 
| 
      
 27 
     | 
    
         
            +
                :kilometers => 6378.135, 
         
     | 
| 
      
 28 
     | 
    
         
            +
                :meters     =>  6378135, 
         
     | 
| 
      
 29 
     | 
    
         
            +
                :feet       => 20925639.8 
         
     | 
| 
      
 30 
     | 
    
         
            +
              }
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              EARTH_MAJOR_AXIS_RADIUS = { 
         
     | 
| 
      
 33 
     | 
    
         
            +
                :miles      => 3963.19059, 
         
     | 
| 
      
 34 
     | 
    
         
            +
                :kilometers => 6378.137,
         
     | 
| 
      
 35 
     | 
    
         
            +
                :meters     => 6378137,
         
     | 
| 
      
 36 
     | 
    
         
            +
                :feet       => 20925646.36
         
     | 
| 
      
 37 
     | 
    
         
            +
              }
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
              EARTH_MINOR_AXIS_RADIUS = { 
         
     | 
| 
      
 40 
     | 
    
         
            +
                :kilometers => 6356.7523142,
         
     | 
| 
      
 41 
     | 
    
         
            +
                :miles      => 3949.90276,
         
     | 
| 
      
 42 
     | 
    
         
            +
                :meters     => 6356752.3142,
         
     | 
| 
      
 43 
     | 
    
         
            +
                :feet       => 20855486.627
         
     | 
| 
      
 44 
     | 
    
         
            +
              }
         
     | 
| 
      
 45 
     | 
    
         
            +
              
         
     | 
| 
      
 46 
     | 
    
         
            +
              RADIAN_PER_DEGREE = Math::PI / 180.0
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              # Haversine Formula
         
     | 
| 
      
 49 
     | 
    
         
            +
              # Adapted from Geokit Gem
         
     | 
| 
      
 50 
     | 
    
         
            +
              # https://github.com/andre/geokit-gem.git
         
     | 
| 
      
 51 
     | 
    
         
            +
              # By: Andre Lewis
         
     | 
| 
      
 52 
     | 
    
         
            +
              PI_DIV_RAD = 0.0174
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
              KMS_PER_MILE = 1.609
         
     | 
| 
      
 55 
     | 
    
         
            +
              METERS_PER_FEET = 3.2808399
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
              MILES_PER_LATITUDE_DEGREE = 69.1
         
     | 
| 
      
 58 
     | 
    
         
            +
              KMS_PER_LATITUDE_DEGREE = MILES_PER_LATITUDE_DEGREE * KMS_PER_MILE
         
     | 
| 
      
 59 
     | 
    
         
            +
              LATITUDE_DEGREES = EARTH_RADIUS[:miles] / MILES_PER_LATITUDE_DEGREE  
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       25 
61 
     | 
    
         
             
              module ClassMethods
         
     | 
| 
       26 
62 
     | 
    
         
             
                def key unit = :km
         
     | 
| 
       27 
63 
     | 
    
         
             
                  unit = unit.to_sym
         
     | 
| 
       28 
     | 
    
         
            -
                  methods.grep(/_unit 
     | 
| 
      
 64 
     | 
    
         
            +
                  methods.grep(/_unit$/).each do |meth|
         
     | 
| 
       29 
65 
     | 
    
         
             
                    return meth.to_s.chomp('_unit').to_sym if send(meth).include? unit
         
     | 
| 
       30 
66 
     | 
    
         
             
                  end
         
     | 
| 
       31 
67 
     | 
    
         
             
                  raise ArgumentError, "Unknown unit key: #{unit}"
         
     | 
| 
       32 
68 
     | 
    
         
             
                end
         
     | 
| 
       33 
69 
     | 
    
         | 
| 
      
 70 
     | 
    
         
            +
                def units
         
     | 
| 
      
 71 
     | 
    
         
            +
                  [:feet, :meters, :kms, :miles, :radians]
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                def all_units
         
     | 
| 
      
 75 
     | 
    
         
            +
                  [:miles, :mile, :kms, :km, :feet, :foot, :meter, :meters, :radians, :rad]
         
     | 
| 
      
 76 
     | 
    
         
            +
                end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                [:feet, :meters, :kms, :miles, :radians].each do |unit|
         
     | 
| 
      
 79 
     | 
    
         
            +
                  class_eval %{
         
     | 
| 
      
 80 
     | 
    
         
            +
                    def #{unit}_to unit, number = 0
         
     | 
| 
      
 81 
     | 
    
         
            +
                      return 0 if number <= 0
         
     | 
| 
      
 82 
     | 
    
         
            +
                      unit = key(unit)
         
     | 
| 
      
 83 
     | 
    
         
            +
                      m = number / GeoUnits.meters_map[:#{unit}]
         
     | 
| 
      
 84 
     | 
    
         
            +
                      m * meters_map[unit]
         
     | 
| 
      
 85 
     | 
    
         
            +
                    end
         
     | 
| 
      
 86 
     | 
    
         
            +
                  }
         
     | 
| 
      
 87 
     | 
    
         
            +
                end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                def earth_radius units
         
     | 
| 
      
 90 
     | 
    
         
            +
                  GeoUnits.EARTH_RADIUS[units.to_sym]
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def radians_per_degree
         
     | 
| 
      
 94 
     | 
    
         
            +
                  0.017453293  #  PI/180
         
     | 
| 
      
 95 
     | 
    
         
            +
                end    
         
     | 
| 
      
 96 
     | 
    
         
            +
                    
         
     | 
| 
      
 97 
     | 
    
         
            +
                def radians_ratio unit
         
     | 
| 
      
 98 
     | 
    
         
            +
                  radians_per_degree * earth_radius[unit]          
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
       34 
101 
     | 
    
         
             
                def precision
         
     | 
| 
       35 
102 
     | 
    
         
             
                  {
         
     | 
| 
       36 
103 
     | 
    
         
             
                    :feet => 0,
         
     | 
| 
         @@ -44,30 +111,31 @@ module GeoUnits 
     | 
|
| 
       44 
111 
     | 
    
         
             
                # from mongoid-geo, as suggested by niedhui :)
         
     | 
| 
       45 
112 
     | 
    
         
             
                def radian_multiplier
         
     | 
| 
       46 
113 
     | 
    
         
             
                  {
         
     | 
| 
       47 
     | 
    
         
            -
                    :feet 
     | 
| 
       48 
     | 
    
         
            -
                    :meters 
     | 
| 
       49 
     | 
    
         
            -
                    :kms 
     | 
| 
       50 
     | 
    
         
            -
                    :miles 
     | 
| 
       51 
     | 
    
         
            -
                    :radians 
     | 
| 
      
 114 
     | 
    
         
            +
                    :feet     => 364491.8,
         
     | 
| 
      
 115 
     | 
    
         
            +
                    :meters   => 111170,
         
     | 
| 
      
 116 
     | 
    
         
            +
                    :kms      => 111.17,
         
     | 
| 
      
 117 
     | 
    
         
            +
                    :miles    => 69.407,
         
     | 
| 
      
 118 
     | 
    
         
            +
                    :radians  => 1
         
     | 
| 
       52 
119 
     | 
    
         
             
                  }
         
     | 
| 
       53 
120 
     | 
    
         
             
                end
         
     | 
| 
       54 
121 
     | 
    
         | 
| 
       55 
122 
     | 
    
         
             
                def meters_multiplier
         
     | 
| 
       56 
123 
     | 
    
         
             
                  {
         
     | 
| 
       57 
     | 
    
         
            -
                    :feet 
     | 
| 
       58 
     | 
    
         
            -
                    :meters 
     | 
| 
       59 
     | 
    
         
            -
                    :kms 
     | 
| 
       60 
     | 
    
         
            -
                    :miles 
     | 
| 
      
 124 
     | 
    
         
            +
                    :feet     => 0.305,
         
     | 
| 
      
 125 
     | 
    
         
            +
                    :meters   => 1,
         
     | 
| 
      
 126 
     | 
    
         
            +
                    :kms      => 6371,
         
     | 
| 
      
 127 
     | 
    
         
            +
                    :miles    => 3959,
         
     | 
| 
      
 128 
     | 
    
         
            +
                    :radians  => 111170 
         
     | 
| 
       61 
129 
     | 
    
         
             
                  }
         
     | 
| 
       62 
130 
     | 
    
         
             
                end
         
     | 
| 
       63 
131 
     | 
    
         | 
| 
       64 
132 
     | 
    
         
             
                def meters_map
         
     | 
| 
       65 
133 
     | 
    
         
             
                  {
         
     | 
| 
       66 
     | 
    
         
            -
                   :feet 
     | 
| 
       67 
     | 
    
         
            -
                   :meters 
     | 
| 
       68 
     | 
    
         
            -
                   :kms 
     | 
| 
       69 
     | 
    
         
            -
                   :miles 
     | 
| 
       70 
     | 
    
         
            -
                   :radians =>  
     | 
| 
      
 134 
     | 
    
         
            +
                   :feet    => 3.2808399,
         
     | 
| 
      
 135 
     | 
    
         
            +
                   :meters  => 1,
         
     | 
| 
      
 136 
     | 
    
         
            +
                   :kms     => 0.001,
         
     | 
| 
      
 137 
     | 
    
         
            +
                   :miles   => 0.00062137,
         
     | 
| 
      
 138 
     | 
    
         
            +
                   :radians => 0.00000899
         
     | 
| 
       71 
139 
     | 
    
         
             
                  }
         
     | 
| 
       72 
140 
     | 
    
         
             
                end
         
     | 
| 
       73 
141 
     | 
    
         | 
| 
         @@ -91,7 +159,7 @@ module GeoUnits 
     | 
|
| 
       91 
159 
     | 
    
         | 
| 
       92 
160 
     | 
    
         
             
                def radians_unit
         
     | 
| 
       93 
161 
     | 
    
         
             
                  [:rad, :radians]
         
     | 
| 
       94 
     | 
    
         
            -
                end 
     | 
| 
      
 162 
     | 
    
         
            +
                end          
         
     | 
| 
       95 
163 
     | 
    
         
             
              end
         
     | 
| 
       96 
164 
     | 
    
         | 
| 
       97 
165 
     | 
    
         
             
              extend ClassMethods
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe GeoUnits do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe 'Core extensions' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                describe '#radians_to' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  it 'should convert radians to kms' do
         
     | 
| 
      
 7 
     | 
    
         
            +
                    2.radians_to(:kms).should be_within(0.5).of 111.17 * 2
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                describe '#miles_to' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  it 'should convert miles to kms' do
         
     | 
| 
      
 13 
     | 
    
         
            +
                    2.miles_to(:kms).should be_within(0.2).of 3.21
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe GeoUnits do
         
     | 
| 
      
 4 
     | 
    
         
            +
              describe '#key' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                it 'should return the unit key' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                  GeoUnits.key(:foot).should == :feet
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              describe '#radians_to' do
         
     | 
| 
      
 11 
     | 
    
         
            +
                it 'should convert radians to kms' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                  GeoUnits.radians_to(:kms, 2).should be_within(0.5).of 111.17 * 2
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              describe '#miles_to' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                it 'should convert miles to kms' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  GeoUnits.miles_to(:kms, 2).should be_within(0.2).of 3.21
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: geo_units
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.3
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,11 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2011-06- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-06-22 00:00:00.000000000Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: sugar-high
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &2153948000 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -21,10 +21,10 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.4.6.2
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *2153948000
         
     | 
| 
       25 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
26 
     | 
    
         
             
              name: rspec
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &2153947180 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
30 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,10 +32,10 @@ dependencies: 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    version: 2.5.0
         
     | 
| 
       33 
33 
     | 
    
         
             
              type: :development
         
     | 
| 
       34 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *2153947180
         
     | 
| 
       36 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
37 
     | 
    
         
             
              name: bundler
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &2153940460 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
39 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
40 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
41 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -43,10 +43,10 @@ dependencies: 
     | 
|
| 
       43 
43 
     | 
    
         
             
                    version: 1.0.6
         
     | 
| 
       44 
44 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *2153940460
         
     | 
| 
       47 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
48 
     | 
    
         
             
              name: jeweler
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &2153939720 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - ~>
         
     | 
| 
         @@ -54,10 +54,10 @@ dependencies: 
     | 
|
| 
       54 
54 
     | 
    
         
             
                    version: 1.6.2
         
     | 
| 
       55 
55 
     | 
    
         
             
              type: :development
         
     | 
| 
       56 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *2153939720
         
     | 
| 
       58 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
59 
     | 
    
         
             
              name: rcov
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &2153938740 !ruby/object:Gem::Requirement
         
     | 
| 
       61 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
63 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -65,7 +65,7 @@ dependencies: 
     | 
|
| 
       65 
65 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       66 
66 
     | 
    
         
             
              type: :development
         
     | 
| 
       67 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *2153938740
         
     | 
| 
       69 
69 
     | 
    
         
             
            description: Easily convert between different distance units such as kms, miles etc.
         
     | 
| 
       70 
70 
     | 
    
         
             
            email: kmandrup@gmail.com
         
     | 
| 
       71 
71 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -88,8 +88,10 @@ files: 
     | 
|
| 
       88 
88 
     | 
    
         
             
            - lib/geo_units/dms_converter.rb
         
     | 
| 
       89 
89 
     | 
    
         
             
            - lib/geo_units/numeric_ext.rb
         
     | 
| 
       90 
90 
     | 
    
         
             
            - spec/geo_units/converter_spec.rb
         
     | 
| 
      
 91 
     | 
    
         
            +
            - spec/geo_units/core_ext_spec.rb
         
     | 
| 
       91 
92 
     | 
    
         
             
            - spec/geo_units/dms_converter_spec.rb
         
     | 
| 
       92 
93 
     | 
    
         
             
            - spec/geo_units/numeric_ext_spec.rb
         
     | 
| 
      
 94 
     | 
    
         
            +
            - spec/geo_units_spec.rb
         
     | 
| 
       93 
95 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       94 
96 
     | 
    
         
             
            homepage: http://github.com/kristianmandrup/geo_units
         
     | 
| 
       95 
97 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -106,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       106 
108 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       107 
109 
     | 
    
         
             
                  segments:
         
     | 
| 
       108 
110 
     | 
    
         
             
                  - 0
         
     | 
| 
       109 
     | 
    
         
            -
                  hash:  
     | 
| 
      
 111 
     | 
    
         
            +
                  hash: -2024456778129613620
         
     | 
| 
       110 
112 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       111 
113 
     | 
    
         
             
              none: false
         
     | 
| 
       112 
114 
     | 
    
         
             
              requirements:
         
     |