geo_coord 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36feeb545afb9bf13f5d330302ba226b9c9fc9ce28aa1b223ad0c796ca1e2e37
4
- data.tar.gz: 57ea4296740735b6c8606738b38498225130620a43056832ae7ee3a96c8b3b2a
3
+ metadata.gz: b3db98f605de72af073cfe394b476854eaea49c5f25ebd576e154eb4674d32ec
4
+ data.tar.gz: a858a86c033c9dc3e6c1d12d0f1de494ac59b253b7bacf541f8f66d78050a5af
5
5
  SHA512:
6
- metadata.gz: 45c9aa30f9d38d1ea2d96cd89fefe0f09ff77a1d18d515402ba6ccb2d37b92a5b8d3ef1903c619cc8c655f4787750db1dae1f457330ac58d2c84ec086ed8962b
7
- data.tar.gz: 77ffed86527f6752f4885c0e22173aa84214c8074a7793fc0026ce8d7c78ee43bc3c6d6e1b62a43d77de03619dcc097dde576531c176d149e115b0bf235532f3
6
+ metadata.gz: 3b0c3ab2b548655cf0ea6b4dc344dfbfad703cdcd02de350d1321e1efc97eed917a161182502703b437a25ba8b1703a60fb0df8aed8bc88fc2358ca2590507a9
7
+ data.tar.gz: bfe1756c5a66741f6cbd81e41d5b4d6977ab6df66b901bad410ddea4fcb246402fd1d8a3b932e8e698a979ad603ed5188668941d47a53a4b7fe650bc18fa7e7a
@@ -0,0 +1,32 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ main:
11
+ name: >-
12
+ ${{ matrix.ruby }}
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ ruby: [ 2.5, 2.6, 2.7, 3.0 ]
18
+
19
+ steps:
20
+ - name: checkout
21
+ uses: actions/checkout@v2
22
+ - name: set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby }}
26
+
27
+ - name: install dependencies
28
+ run: bundle install --jobs 3 --retry 3
29
+ - name: spec
30
+ run: bundle exec rake spec
31
+ - name: rubocop
32
+ run: bundle exec rake rubocop
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Geo::Coord changelog
2
2
 
3
+ ## 0.2.0 - Feb 15, 2021
4
+
5
+ * Support Ruby versions up to 3.0
6
+ * Drop compatibility checks for Ruby < 2.4
7
+ * Update specs to modern style (no hope to make it to standard library after 5 years :shrug:)
8
+ * Fix seconds fraction truncation in DMS-initialization (@matthew-angelswing)
9
+ * Change positional `hemisphere` argument in `to_s` to keyword for clarity
10
+
3
11
  ## 0.1.0 - Feb 3, 2018
4
12
 
5
13
  * Switch to `BigDecimal` for internal values storage;
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # Geo::Coord—simple geo coordinates class for Ruby
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/geo_coord.svg)](http://badge.fury.io/rb/geo_coord)
4
- [![Dependency Status](https://gemnasium.com/zverok/geo_coord.svg)](https://gemnasium.com/zverok/geo_coord)
5
- [![Build Status](https://travis-ci.org/zverok/geo_coord.svg?branch=master)](https://travis-ci.org/zverok/geo_coord)
4
+ ![Build Status](https://github.com/zverok/geo_coord/workflows/CI/badge.svg?branch=master)
6
5
  [![Coverage Status](https://coveralls.io/repos/zverok/geo_coord/badge.svg?branch=master)](https://coveralls.io/r/zverok/geo_coord?branch=master)
7
6
 
8
7
  `Geo::Coord` is a basic class representing `[latitude, longitude]` pair
@@ -36,13 +35,13 @@ other projects.
36
35
  You can read my initial proposal [here](https://github.com/zverok/geo_coord/blob/master/StdlibProposal.md)
37
36
  and discussion in Ruby tracker [there](https://bugs.ruby-lang.org/issues/12361).
38
37
 
39
- I still have a small hope it would be part of stdlib once, that's why I
38
+ ~~I still have a small hope it would be part of stdlib once, that's why I
40
39
  preserve the style of specs (outdated rspec, but compatible with mspec used
41
- for standard library) and docs (yard in RDoc-compatibility mode).
40
+ for standard library) and docs (yard in RDoc-compatibility mode).~~
42
41
 
43
42
  ## Installation
44
43
 
45
- Now when it is a gem, just do your usual `gem install geo_coord` or add
44
+ As usual: `gem install geo_coord` or add
46
45
  `gem "geo_coord", require: "geo/coord"` to your Gemfile.
47
46
 
48
47
  ## Usage
@@ -178,7 +177,7 @@ metres for distances (as they are SI unit) and degrees for azimuth.
178
177
  Latitude and longitude are stored in degrees, but radians values accessors
179
178
  are provided (being widely used in geodesy math).
180
179
 
181
- **Internal storage**: Since ver 0.0.2, latitude and longitude stored
180
+ **Internal storage**: Since ver 0.1.0, latitude and longitude stored
182
181
  internally as an instances of `BigDecimal`. While having some memory
183
182
  and performance downsides, this datatype provides _correctness_ of
184
183
  conversions between floating point & deg-min-sec representations:
data/geo_coord.gemspec CHANGED
@@ -20,15 +20,17 @@ Gem::Specification.new do |s|
20
20
  end
21
21
  s.require_paths = ['lib']
22
22
 
23
- s.required_ruby_version = '>= 2.1.0'
23
+ s.required_ruby_version = '>= 2.4.0'
24
24
 
25
25
  s.add_development_dependency 'rubocop', '>= 0.40'
26
- s.add_development_dependency 'rspec', '= 2.14'
27
- s.add_development_dependency 'mspec'
26
+ s.add_development_dependency 'rubocop-rspec'
27
+ s.add_development_dependency 'rspec'
28
28
  s.add_development_dependency 'simplecov', '~> 0.9'
29
29
  s.add_development_dependency 'rake'
30
30
  s.add_development_dependency 'rubygems-tasks'
31
31
  s.add_development_dependency 'yard'
32
32
  s.add_development_dependency 'coveralls'
33
33
  s.add_development_dependency 'dokaz'
34
+ s.add_development_dependency 'rspec-its'
35
+ s.add_development_dependency 'saharspec'
34
36
  end
data/lib/geo/coord.rb CHANGED
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bigdecimal'
4
+ require 'bigdecimal/util'
2
5
 
3
6
  # Geo::Coord is Ruby's library for handling [lat, lng] pairs of
4
7
  # geographical coordinates. It provides most of basic functionality
@@ -141,44 +144,44 @@ module Geo
141
144
  end
142
145
 
143
146
  # @private
144
- INT_PATTERN = '[-+]?\d+'.freeze # :nodoc:
147
+ INT_PATTERN = '[-+]?\d+' # :nodoc:
145
148
  # @private
146
- UINT_PATTERN = '\d+'.freeze # :nodoc:
149
+ UINT_PATTERN = '\d+' # :nodoc:
147
150
  # @private
148
- FLOAT_PATTERN = '[-+]?\d+(?:\.\d*)?'.freeze # :nodoc:
151
+ FLOAT_PATTERN = '[-+]?\d+(?:\.\d*)?' # :nodoc:
149
152
  # @private
150
- UFLOAT_PATTERN = '\d+(?:\.\d*)?'.freeze # :nodoc:
153
+ UFLOAT_PATTERN = '\d+(?:\.\d*)?' # :nodoc:
151
154
 
152
155
  # @private
153
- DEG_PATTERN = '[ °d]'.freeze # :nodoc:
156
+ DEG_PATTERN = '[ °d]' # :nodoc:
154
157
  # @private
155
- MIN_PATTERN = "['′’m]".freeze # :nodoc:
158
+ MIN_PATTERN = "['′’m]" # :nodoc:
156
159
  # @private
157
- SEC_PATTERN = '["″s]'.freeze # :nodoc:
160
+ SEC_PATTERN = '["″s]' # :nodoc:
158
161
 
159
162
  # @private
160
- LL_PATTERN = /^(#{FLOAT_PATTERN})\s*[,; ]\s*(#{FLOAT_PATTERN})$/ # :nodoc:
163
+ LL_PATTERN = /^(#{FLOAT_PATTERN})\s*[,; ]\s*(#{FLOAT_PATTERN})$/.freeze # :nodoc:
161
164
 
162
165
  # @private
163
- DMS_LATD_P = "(?<latd>#{INT_PATTERN})#{DEG_PATTERN}".freeze # :nodoc:
166
+ DMS_LATD_P = "(?<latd>#{INT_PATTERN})#{DEG_PATTERN}" # :nodoc:
164
167
  # @private
165
- DMS_LATM_P = "(?<latm>#{UINT_PATTERN})#{MIN_PATTERN}".freeze # :nodoc:
168
+ DMS_LATM_P = "(?<latm>#{UINT_PATTERN})#{MIN_PATTERN}" # :nodoc:
166
169
  # @private
167
- DMS_LATS_P = "(?<lats>#{UFLOAT_PATTERN})#{SEC_PATTERN}".freeze # :nodoc:
170
+ DMS_LATS_P = "(?<lats>#{UFLOAT_PATTERN})#{SEC_PATTERN}" # :nodoc:
168
171
  # @private
169
- DMS_LAT_P = "#{DMS_LATD_P}\\s*#{DMS_LATM_P}\\s*#{DMS_LATS_P}\\s*(?<lath>[NS])".freeze # :nodoc:
172
+ DMS_LAT_P = "#{DMS_LATD_P}\\s*#{DMS_LATM_P}\\s*#{DMS_LATS_P}\\s*(?<lath>[NS])" # :nodoc:
170
173
 
171
174
  # @private
172
- DMS_LNGD_P = "(?<lngd>#{INT_PATTERN})#{DEG_PATTERN}".freeze # :nodoc:
175
+ DMS_LNGD_P = "(?<lngd>#{INT_PATTERN})#{DEG_PATTERN}" # :nodoc:
173
176
  # @private
174
- DMS_LNGM_P = "(?<lngm>#{UINT_PATTERN})#{MIN_PATTERN}".freeze # :nodoc:
177
+ DMS_LNGM_P = "(?<lngm>#{UINT_PATTERN})#{MIN_PATTERN}" # :nodoc:
175
178
  # @private
176
- DMS_LNGS_P = "(?<lngs>#{UFLOAT_PATTERN})#{SEC_PATTERN}".freeze # :nodoc:
179
+ DMS_LNGS_P = "(?<lngs>#{UFLOAT_PATTERN})#{SEC_PATTERN}" # :nodoc:
177
180
  # @private
178
- DMS_LNG_P = "#{DMS_LNGD_P}\\s*#{DMS_LNGM_P}\\s*#{DMS_LNGS_P}\\s*(?<lngh>[EW])".freeze # :nodoc:
181
+ DMS_LNG_P = "#{DMS_LNGD_P}\\s*#{DMS_LNGM_P}\\s*#{DMS_LNGS_P}\\s*(?<lngh>[EW])" # :nodoc:
179
182
 
180
183
  # @private
181
- DMS_PATTERN = /^\s*#{DMS_LAT_P}\s*[,; ]\s*#{DMS_LNG_P}\s*$/x # :nodoc:
184
+ DMS_PATTERN = /^\s*#{DMS_LAT_P}\s*[,; ]\s*#{DMS_LNG_P}\s*$/x.freeze # :nodoc:
182
185
 
183
186
  # Parses Coord from string containing float latitude and longitude.
184
187
  # Understands several types of separators/spaces between values.
@@ -277,15 +280,17 @@ module Geo
277
280
  pattern = PARSE_PATTERNS.inject(pattern) do |memo, (pfrom, pto)|
278
281
  memo.gsub(pfrom, pto)
279
282
  end
280
- match = Regexp.new('^' + pattern).match(str)
283
+ match = Regexp.new("^#{pattern}").match(str)
281
284
  raise ArgumentError, "Coordinates str #{str} can't be parsed by pattern #{pattern}" unless match
282
- new(match.names.map { |n| [n.to_sym, _extract_match(match, n)] }.to_h)
285
+
286
+ new(**match.names.map { |n| [n.to_sym, _extract_match(match, n)] }.to_h)
283
287
  end
284
288
 
285
289
  private
286
290
 
287
291
  def _extract_match(match, name)
288
292
  return nil unless match[name]
293
+
289
294
  val = match[name]
290
295
  name.end_with?('h') ? val : val.to_f
291
296
  end
@@ -319,28 +324,28 @@ module Geo
319
324
  # g = Geo::Coord.new(lat: 50.004444)
320
325
  # # => #<Geo::Coord 50°0'16"N 0°0'0"W>
321
326
  #
322
- def initialize(lat = nil, lng = nil, **opts)
327
+ def initialize(lat = nil, lng = nil, **kwargs) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
323
328
  @globe = Globes::Earth.instance
324
329
 
330
+ # It is probably can be clearer with Ruby 2.7+ pattern-matching... or with less permissive
331
+ # protocol :)
332
+ kwargs = lat if lat.is_a?(Hash) && kwargs.empty? # Ruby 3.0
333
+
325
334
  case
326
335
  when lat && lng
327
336
  _init(lat, lng)
328
- when opts.key?(:lat) || opts.key?(:lng)
329
- _init(opts[:lat], opts[:lng])
330
- when opts.key?(:latd) || opts.key?(:lngd)
331
- _init_dms(opts)
337
+ when kwargs.key?(:lat) || kwargs.key?(:lng)
338
+ _init(*kwargs.values_at(:lat, :lng))
339
+ when kwargs.key?(:latd) || kwargs.key?(:lngd)
340
+ _init_dms(**kwargs)
332
341
  else
333
- raise ArgumentError, "Can't create #{self.class} by provided data"
342
+ raise ArgumentError, "Can't create #{self.class} by provided data: (#{lat}, #{lng}, **#{kwargs}"
334
343
  end
335
344
  end
336
345
 
337
346
  # Compares with +other+.
338
347
  #
339
- # Note, that comparison includes comparing floating point values,
340
- # so, when two "almost exactly same" coord pairs are calculated using
341
- # different methods, you can rarely expect them to be _exactly_ equal.
342
- #
343
- # Also, note that no greater/lower relation is defined on Coord, so,
348
+ # Note that no greater/lower relation is defined on Coord, so,
344
349
  # for example, you can't just sort an array of Coord.
345
350
  def ==(other)
346
351
  other.is_a?(self.class) && other.lat == lat && other.lng == lng
@@ -363,7 +368,7 @@ module Geo
363
368
 
364
369
  # Returns latitude hemisphere (upcase letter 'N' or 'S').
365
370
  def lath
366
- lat > 0 ? 'N' : 'S'
371
+ lat.positive? ? 'N' : 'S'
367
372
  end
368
373
 
369
374
  # Returns longitude degrees (unsigned integer).
@@ -383,7 +388,7 @@ module Geo
383
388
 
384
389
  # Returns longitude hemisphere (upcase letter 'E' or 'W').
385
390
  def lngh
386
- lng > 0 ? 'E' : 'W'
391
+ lng.positive? ? 'E' : 'W'
387
392
  end
388
393
 
389
394
  # Returns latitude components: degrees, minutes, seconds and optionally
@@ -392,17 +397,17 @@ module Geo
392
397
  # # Nothern hemisphere:
393
398
  # g = Geo::Coord.new(50.004444, 36.231389)
394
399
  #
395
- # g.latdms # => [50, 0, 15.9984, "N"]
396
- # g.latdms(true) # => [50, 0, 15.9984]
400
+ # g.latdms # => [50, 0, 15.9984, "N"]
401
+ # g.latdms(hemisphere: false) # => [50, 0, 15.9984]
397
402
  #
398
403
  # # Southern hemisphere:
399
404
  # g = Geo::Coord.new(-50.004444, 36.231389)
400
405
  #
401
- # g.latdms # => [50, 0, 15.9984, "S"]
402
- # g.latdms(true) # => [-50, 0, 15.9984]
406
+ # g.latdms # => [50, 0, 15.9984, "S"]
407
+ # g.latdms(hemisphere: false) # => [-50, 0, 15.9984]
403
408
  #
404
- def latdms(nohemisphere = false)
405
- nohemisphere ? [latsign * latd, latm, lats] : [latd, latm, lats, lath]
409
+ def latdms(hemisphere: true)
410
+ hemisphere ? [latd, latm, lats, lath] : [latsign * latd, latm, lats]
406
411
  end
407
412
 
408
413
  # Returns longitude components: degrees, minutes, seconds and optionally
@@ -411,17 +416,17 @@ module Geo
411
416
  # # Eastern hemisphere:
412
417
  # g = Geo::Coord.new(50.004444, 36.231389)
413
418
  #
414
- # g.lngdms # => [36, 13, 53.0004, "E"]
415
- # g.lngdms(true) # => [36, 13, 53.0004]
419
+ # g.lngdms # => [36, 13, 53.0004, "E"]
420
+ # g.lngdms(hemisphere: false) # => [36, 13, 53.0004]
416
421
  #
417
422
  # # Western hemisphere:
418
423
  # g = Geo::Coord.new(50.004444, 36.231389)
419
424
  #
420
- # g.lngdms # => [36, 13, 53.0004, "E"]
421
- # g.lngdms(true) # => [-36, 13, 53.0004]
425
+ # g.lngdms # => [36, 13, 53.0004, "E"]
426
+ # g.lngdms(hemisphere: false) # => [-36, 13, 53.0004]
422
427
  #
423
- def lngdms(nohemisphere = false)
424
- nohemisphere ? [lngsign * lngd, lngm, lngs] : [lngd, lngm, lngs, lngh]
428
+ def lngdms(hemisphere: true)
429
+ hemisphere ? [lngd, lngm, lngs, lngh] : [lngsign * lngd, lngm, lngs]
425
430
  end
426
431
 
427
432
  # Latitude in radians. Geodesy formulae almost alwayse use greek Phi
@@ -488,11 +493,11 @@ module Geo
488
493
  end
489
494
 
490
495
  # @private
491
- INTFLAGS = '\+'.freeze # :nodoc:
496
+ INTFLAGS = '\+' # :nodoc:
492
497
  # @private
493
- FLOATUFLAGS = /\.0\d+/ # :nodoc:
498
+ FLOATUFLAGS = /\.0\d+/.freeze # :nodoc:
494
499
  # @private
495
- FLOATFLAGS = /\+?#{FLOATUFLAGS}?/ # :nodoc:
500
+ FLOATFLAGS = /\+?#{FLOATUFLAGS}?/.freeze # :nodoc:
496
501
 
497
502
  # @private
498
503
  DIRECTIVES = { # :nodoc:
@@ -605,8 +610,8 @@ module Geo
605
610
 
606
611
  private
607
612
 
608
- LAT_RANGE_ERROR = 'Expected latitude to be between -90 and 90, %p received'.freeze
609
- LNG_RANGE_ERROR = 'Expected longitude to be between -180 and 180, %p received'.freeze
613
+ LAT_RANGE_ERROR = 'Expected latitude to be between -90 and 90, %p received'
614
+ LNG_RANGE_ERROR = 'Expected longitude to be between -180 and 180, %p received'
610
615
 
611
616
  def _init(lat, lng)
612
617
  lat = BigDecimal(lat.to_f, 10)
@@ -624,22 +629,16 @@ module Geo
624
629
  # @private
625
630
  LNGH = {'E' => 1, 'W' => -1}.freeze # :nodoc:
626
631
 
627
- def _init_dms(opts) # rubocop:disable Metrics/AbcSize
628
- lat = (
629
- opts[:latd].to_i +
630
- opts[:latm].to_i / 60.0 +
631
- opts[:lats].to_i / 3600.0
632
- ) * guess_sign(opts[:lath], LATH)
633
- lng = (
634
- opts[:lngd].to_i +
635
- opts[:lngm].to_i / 60.0 +
636
- opts[:lngs].to_i / 3600.0
637
- ) * guess_sign(opts[:lngh], LNGH)
632
+ def _init_dms(latd: 0, latm: 0, lats: 0, lath: nil, lngd: 0, lngm: 0, lngs: 0, lngh: nil) # rubocop:disable Metrics/AbcSize
633
+ lat = (latd.to_d + latm.to_d / 60 + lats.to_d / 3600) * guess_sign(lath, LATH)
634
+ lng = (lngd.to_d + lngm.to_d / 60 + lngs.to_d / 3600) * guess_sign(lngh, LNGH)
635
+
638
636
  _init(lat, lng)
639
637
  end
640
638
 
641
639
  def guess_sign(h, hemishperes)
642
640
  return 1 unless h
641
+
643
642
  hemishperes[h] or
644
643
  raise ArgumentError, "Unidentified hemisphere: #{h}"
645
644
  end
@@ -647,6 +646,7 @@ module Geo
647
646
  def guard_seconds(pattern, result)
648
647
  m = pattern.match(/<(lat|lng)s>/)
649
648
  return result unless m && result.start_with?('60')
649
+
650
650
  carry = "#{m[1]}m".to_sym
651
651
  [pattern % {lats: 0, lngs: 0}, carry]
652
652
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Geo
2
4
  class Coord
3
- VERSION = '0.1.0'.freeze
5
+ VERSION = '0.2.0'
4
6
  end
5
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_coord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Shepelev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-03 00:00:00.000000000 Z
11
+ date: 2021-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop
@@ -25,21 +25,21 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.40'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: rubocop-rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '2.14'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '2.14'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: mspec
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -136,12 +136,41 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec-its
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: saharspec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
139
167
  description: ''
140
168
  email: zverok.offline@gmail.com
141
169
  executables: []
142
170
  extensions: []
143
171
  extra_rdoc_files: []
144
172
  files:
173
+ - ".github/workflows/ci.yml"
145
174
  - ".yardopts"
146
175
  - CHANGELOG.md
147
176
  - LICENSE.txt
@@ -163,15 +192,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
192
  requirements:
164
193
  - - ">="
165
194
  - !ruby/object:Gem::Version
166
- version: 2.1.0
195
+ version: 2.4.0
167
196
  required_rubygems_version: !ruby/object:Gem::Requirement
168
197
  requirements:
169
198
  - - ">="
170
199
  - !ruby/object:Gem::Version
171
200
  version: '0'
172
201
  requirements: []
173
- rubyforge_project:
174
- rubygems_version: 2.7.4
202
+ rubygems_version: 3.0.6
175
203
  signing_key:
176
204
  specification_version: 4
177
205
  summary: Geo::Coord class