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 +4 -4
- data/.github/workflows/ci.yml +32 -0
- data/CHANGELOG.md +8 -0
- data/README.md +5 -6
- data/geo_coord.gemspec +5 -3
- data/lib/geo/coord.rb +60 -60
- data/lib/geo/coord/version.rb +3 -1
- metadata +39 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3db98f605de72af073cfe394b476854eaea49c5f25ebd576e154eb4674d32ec
|
4
|
+
data.tar.gz: a858a86c033c9dc3e6c1d12d0f1de494ac59b253b7bacf541f8f66d78050a5af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
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.
|
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'
|
27
|
-
s.add_development_dependency '
|
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+'
|
147
|
+
INT_PATTERN = '[-+]?\d+' # :nodoc:
|
145
148
|
# @private
|
146
|
-
UINT_PATTERN = '\d+'
|
149
|
+
UINT_PATTERN = '\d+' # :nodoc:
|
147
150
|
# @private
|
148
|
-
FLOAT_PATTERN = '[-+]?\d+(?:\.\d*)?'
|
151
|
+
FLOAT_PATTERN = '[-+]?\d+(?:\.\d*)?' # :nodoc:
|
149
152
|
# @private
|
150
|
-
UFLOAT_PATTERN = '\d+(?:\.\d*)?'
|
153
|
+
UFLOAT_PATTERN = '\d+(?:\.\d*)?' # :nodoc:
|
151
154
|
|
152
155
|
# @private
|
153
|
-
DEG_PATTERN = '[ °d]'
|
156
|
+
DEG_PATTERN = '[ °d]' # :nodoc:
|
154
157
|
# @private
|
155
|
-
MIN_PATTERN = "['′’m]"
|
158
|
+
MIN_PATTERN = "['′’m]" # :nodoc:
|
156
159
|
# @private
|
157
|
-
SEC_PATTERN = '["″s]'
|
160
|
+
SEC_PATTERN = '["″s]' # :nodoc:
|
158
161
|
|
159
162
|
# @private
|
160
|
-
LL_PATTERN = /^(#{FLOAT_PATTERN})\s*[,; ]\s*(#{FLOAT_PATTERN})
|
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}"
|
166
|
+
DMS_LATD_P = "(?<latd>#{INT_PATTERN})#{DEG_PATTERN}" # :nodoc:
|
164
167
|
# @private
|
165
|
-
DMS_LATM_P = "(?<latm>#{UINT_PATTERN})#{MIN_PATTERN}"
|
168
|
+
DMS_LATM_P = "(?<latm>#{UINT_PATTERN})#{MIN_PATTERN}" # :nodoc:
|
166
169
|
# @private
|
167
|
-
DMS_LATS_P = "(?<lats>#{UFLOAT_PATTERN})#{SEC_PATTERN}"
|
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])"
|
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}"
|
175
|
+
DMS_LNGD_P = "(?<lngd>#{INT_PATTERN})#{DEG_PATTERN}" # :nodoc:
|
173
176
|
# @private
|
174
|
-
DMS_LNGM_P = "(?<lngm>#{UINT_PATTERN})#{MIN_PATTERN}"
|
177
|
+
DMS_LNGM_P = "(?<lngm>#{UINT_PATTERN})#{MIN_PATTERN}" # :nodoc:
|
175
178
|
# @private
|
176
|
-
DMS_LNGS_P = "(?<lngs>#{UFLOAT_PATTERN})#{SEC_PATTERN}"
|
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])"
|
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(
|
283
|
+
match = Regexp.new("^#{pattern}").match(str)
|
281
284
|
raise ArgumentError, "Coordinates str #{str} can't be parsed by pattern #{pattern}" unless match
|
282
|
-
|
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, **
|
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
|
329
|
-
_init(
|
330
|
-
when
|
331
|
-
_init_dms(
|
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
|
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
|
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
|
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
|
396
|
-
# g.latdms(
|
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
|
402
|
-
# g.latdms(
|
406
|
+
# g.latdms # => [50, 0, 15.9984, "S"]
|
407
|
+
# g.latdms(hemisphere: false) # => [-50, 0, 15.9984]
|
403
408
|
#
|
404
|
-
def latdms(
|
405
|
-
|
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
|
415
|
-
# g.lngdms(
|
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
|
421
|
-
# g.lngdms(
|
425
|
+
# g.lngdms # => [36, 13, 53.0004, "E"]
|
426
|
+
# g.lngdms(hemisphere: false) # => [-36, 13, 53.0004]
|
422
427
|
#
|
423
|
-
def lngdms(
|
424
|
-
|
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 = '\+'
|
496
|
+
INTFLAGS = '\+' # :nodoc:
|
492
497
|
# @private
|
493
|
-
FLOATUFLAGS = /\.0\d
|
498
|
+
FLOATUFLAGS = /\.0\d+/.freeze # :nodoc:
|
494
499
|
# @private
|
495
|
-
FLOATFLAGS = /\+?#{FLOATUFLAGS}
|
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'
|
609
|
-
LNG_RANGE_ERROR = 'Expected longitude to be between -180 and 180, %p received'
|
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(
|
628
|
-
lat = (
|
629
|
-
|
630
|
-
|
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
|
data/lib/geo/coord/version.rb
CHANGED
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.
|
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:
|
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: '
|
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: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
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.
|
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
|
-
|
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
|