ocean-names 0.2.4 → 0.3.4
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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +88 -0
- data/Gemfile.lock +11 -0
- data/README.md +12 -7
- data/lib/ocean/names.rb +15 -2
- data/lib/ocean/names/version.rb +1 -1
- data/ocean-names.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bae097bab35a19f1d7a9f8df2924387d6948fee8965cc308a1fffab8baedd53e
|
4
|
+
data.tar.gz: 9d798670d00d48cd2b93473385e1957ba166bf5ec28a385621517b62429a003a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3def51ff10c058007636d8d199460acf860dad61ef125728779346c4dea715837322b981151024bbb2a6b92a65c703c1fd04bc06c041c06399aa8335585167d9
|
7
|
+
data.tar.gz: 1161be402544502a0d4c74f7b3e180d5b6b5794b46c0cf1168a5eb266ca51b613ce9a8bea6d157dbe8b3921aabed1fd5608fac4cfe833eeb773be94cac2421bb
|
@@ -0,0 +1,88 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
working_directory: ~/repo
|
5
|
+
parallelism: 4
|
6
|
+
shell: /bin/bash --login
|
7
|
+
environment:
|
8
|
+
RAILS_ENV: test
|
9
|
+
RACK_ENV: test
|
10
|
+
COVERAGE: true
|
11
|
+
TZ: /usr/share/zoneinfo/America/Chicago
|
12
|
+
docker:
|
13
|
+
- image: circleci/ruby:2.6.5
|
14
|
+
steps:
|
15
|
+
- checkout
|
16
|
+
- restore_cache:
|
17
|
+
keys:
|
18
|
+
# This branch if available
|
19
|
+
- v2-dep-{{ .Branch }}-
|
20
|
+
# Default branch if not
|
21
|
+
- v2-dep-master-
|
22
|
+
# Any branch if there are none on the default branch - this should be unnecessary if you have your default branch configured correctly
|
23
|
+
- v2-dep-
|
24
|
+
- run:
|
25
|
+
name: install bundler
|
26
|
+
command: gem install bundler
|
27
|
+
- run:
|
28
|
+
name: bundle gems
|
29
|
+
command: bundle install --path=vendor/bundle --jobs=4 --retry=3
|
30
|
+
- run:
|
31
|
+
name: Install Code Climate Test Reporter
|
32
|
+
command: |
|
33
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
34
|
+
chmod +x ./cc-test-reporter
|
35
|
+
- run:
|
36
|
+
name: Run tests
|
37
|
+
command: |
|
38
|
+
mkdir -p test-results/rspec test-artifacts
|
39
|
+
./cc-test-reporter before-build
|
40
|
+
TESTFILES=$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)
|
41
|
+
bundle exec rspec --profile 10 \
|
42
|
+
--color \
|
43
|
+
--order random \
|
44
|
+
--format RspecJunitFormatter \
|
45
|
+
--out test-results/rspec/rspec.xml \
|
46
|
+
--format progress \
|
47
|
+
-- ${TESTFILES}
|
48
|
+
- run:
|
49
|
+
name: Code Climate Test Coverage
|
50
|
+
command: |
|
51
|
+
./cc-test-reporter format-coverage -t simplecov -o "coverage/codeclimate.$CIRCLE_NODE_INDEX.json"
|
52
|
+
- persist_to_workspace:
|
53
|
+
root: coverage
|
54
|
+
paths:
|
55
|
+
- codeclimate.*.json
|
56
|
+
- store_test_results:
|
57
|
+
path: test-results
|
58
|
+
- store_artifacts:
|
59
|
+
path: test-artifacts
|
60
|
+
|
61
|
+
upload-coverage:
|
62
|
+
docker:
|
63
|
+
- image: circleci/ruby:2.6.5
|
64
|
+
environment:
|
65
|
+
CC_TEST_REPORTER_ID: 568eec2f9aed445a55cc62e3ef99186d51dda170c5ee394690d1fe4034e194fd
|
66
|
+
working_directory: ~/repo
|
67
|
+
|
68
|
+
steps:
|
69
|
+
- attach_workspace:
|
70
|
+
at: ~/repo
|
71
|
+
- run:
|
72
|
+
name: Install Code Climate Test Reporter
|
73
|
+
command: |
|
74
|
+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
75
|
+
chmod +x ./cc-test-reporter
|
76
|
+
- run:
|
77
|
+
command: |
|
78
|
+
./cc-test-reporter sum-coverage --output - codeclimate.*.json | ./cc-test-reporter upload-coverage --debug --input -
|
79
|
+
|
80
|
+
workflows:
|
81
|
+
version: 2
|
82
|
+
|
83
|
+
commit:
|
84
|
+
jobs:
|
85
|
+
- build
|
86
|
+
- upload-coverage:
|
87
|
+
requires:
|
88
|
+
- build
|
data/Gemfile.lock
CHANGED
@@ -10,7 +10,9 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
coderay (1.1.2)
|
12
12
|
diff-lcs (1.3)
|
13
|
+
docile (1.3.2)
|
13
14
|
geokit (1.13.1)
|
15
|
+
json (2.2.0)
|
14
16
|
method_source (0.9.2)
|
15
17
|
oj (3.9.2)
|
16
18
|
pry (0.12.2)
|
@@ -30,6 +32,13 @@ GEM
|
|
30
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
31
33
|
rspec-support (~> 3.9.0)
|
32
34
|
rspec-support (3.9.0)
|
35
|
+
rspec_junit_formatter (0.4.1)
|
36
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
37
|
+
simplecov (0.17.1)
|
38
|
+
docile (~> 1.1)
|
39
|
+
json (>= 1.8, < 3)
|
40
|
+
simplecov-html (~> 0.10.0)
|
41
|
+
simplecov-html (0.10.2)
|
33
42
|
|
34
43
|
PLATFORMS
|
35
44
|
ruby
|
@@ -40,6 +49,8 @@ DEPENDENCIES
|
|
40
49
|
pry (~> 0.12.2)
|
41
50
|
rake (~> 10.0)
|
42
51
|
rspec (~> 3.0)
|
52
|
+
rspec_junit_formatter (~> 0.4.1)
|
53
|
+
simplecov (~> 0.17.1)
|
43
54
|
|
44
55
|
BUNDLED WITH
|
45
56
|
2.0.2
|
data/README.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
# Ocean::Names
|
2
2
|
|
3
|
-
|
3
|
+
[](https://badge.fury.io/rb/ocean-names)
|
4
|
+
[](https://circleci.com/gh/skcc321/ocean-names/tree/master)
|
5
|
+
[](https://codeclimate.com/github/skcc321/ocean-names/maintainability)
|
6
|
+
[](https://codeclimate.com/github/skcc321/ocean-names/test_coverage)
|
7
|
+
|
8
|
+
Simple & fast enough (production ready & offline) reverse geocoder for oceans/seas.
|
4
9
|
|
5
10
|
## Installation
|
6
11
|
|
@@ -24,17 +29,17 @@ Or install it yourself as:
|
|
24
29
|
2.6.5 :001 > require "ocean/names"
|
25
30
|
=> true
|
26
31
|
2.6.5 :002 > Ocean::Names.reverse_geocode(lat: 0, lng: 0)
|
27
|
-
=> {"name"=>"South Atlantic Ocean", "
|
32
|
+
=> {"name"=>"South Atlantic Ocean", "longitude"=>-18.80876715914, "latitude"=>-33.73239551445, "min_x"=>-69.60083675371, "min_y"=>-60, "max_x"=>20.00904913827, "max_y"=>0.07510554798, "area"=>40501812}
|
28
33
|
2.6.5 :003 > Ocean::Names.reverse_geocode(lat: -18, lng: -33)
|
29
|
-
=> {"name"=>"South Atlantic Ocean", "
|
34
|
+
=> {"name"=>"South Atlantic Ocean", "longitude"=>-18.80876715914, "latitude"=>-33.73239551445, "min_x"=>-69.60083675371, "min_y"=>-60, "max_x"=>20.00904913827, "max_y"=>0.07510554798, "area"=>40501812}
|
30
35
|
2.6.5 :004 > Ocean::Names.reverse_geocode(lat: 79, lng: -32)
|
31
|
-
=> {"name"=>"Indian Ocean", "
|
36
|
+
=> {"name"=>"Indian Ocean", "longitude"=>79.20858601429, "latitude"=>-32.72458381046, "min_x"=>20.00261595272, "min_y"=>-60, "max_x"=>146.8982192222, "max_y"=>10.44499945636, "area"=>58230954}
|
32
37
|
2.6.5 :005 > Ocean::Names.reverse_geocode(lat: 135, lng: -40)
|
33
|
-
=> {"name"=>"Great Australian Bight", "
|
38
|
+
=> {"name"=>"Great Australian Bight", "longitude"=>132.7165581317, "latitude"=>-36.72591576597, "min_x"=>117.6141982382, "min_y"=>-43.56601647135, "max_x"=>146.23115575344, "max_y"=>-31.46366941901, "area"=>1326209}
|
34
39
|
2.6.5 :006 > Ocean::Names.reverse_geocode(lat: 135, lng: 40)
|
35
|
-
=> {"name"=>"Japan Sea", "
|
40
|
+
=> {"name"=>"Japan Sea", "longitude"=>135.13274500727, "latitude"=>40.5084302428, "min_x"=>125.8013889, "min_y"=>32.57501368363, "max_x"=>142.2638347153, "max_y"=>51.74733316939, "area"=>1066307}
|
36
41
|
2.6.5 :007 > Ocean::Names.reverse_geocode(lat: 125, lng: 29)
|
37
|
-
=> {"name"=>"Eastern China Sea", "
|
42
|
+
=> {"name"=>"Eastern China Sea", "longitude"=>125.21708986497, "latitude"=>29.13089135213, "min_x"=>118.47804582106, "min_y"=>24.05760752069, "max_x"=>131.1322036827, "max_y"=>33.37195920955, "area"=>761356}
|
38
43
|
```
|
39
44
|
|
40
45
|
## Development
|
data/lib/ocean/names.rb
CHANGED
@@ -12,16 +12,29 @@ module Ocean
|
|
12
12
|
GET_POINTS.(arg.first)
|
13
13
|
}
|
14
14
|
|
15
|
+
WITHIN_BOUNDS = ->(record, x, y) {
|
16
|
+
record["min_x"] <= x &&
|
17
|
+
record["max_x"] >= x &&
|
18
|
+
record["min_y"] <= y &&
|
19
|
+
record["max_y"] >= y
|
20
|
+
}
|
21
|
+
|
15
22
|
def self.reverse_geocode(lat:, lng:)
|
16
23
|
point = Geokit::LatLng.new(lat, lng)
|
17
24
|
|
18
|
-
data.find do |record|
|
25
|
+
rec = data.find do |record|
|
26
|
+
# avoid check of obviously false geometries
|
27
|
+
next unless WITHIN_BOUNDS.(record, lat, lng)
|
28
|
+
|
29
|
+
# get points from nested arrays
|
19
30
|
source = GET_POINTS.(record["geometry"])
|
20
31
|
|
21
32
|
points = source.map { |x| Geokit::LatLng.new(*x) }
|
22
33
|
polygon = Geokit::Polygon.new(points)
|
23
34
|
polygon.contains?(point)
|
24
|
-
end
|
35
|
+
end
|
36
|
+
|
37
|
+
rec&.reject do |key|
|
25
38
|
key == "geometry"
|
26
39
|
end
|
27
40
|
end
|
data/lib/ocean/names/version.rb
CHANGED
data/ocean-names.gemspec
CHANGED
@@ -34,5 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_development_dependency "bundler", "~> 2.0"
|
35
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
36
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
37
|
+
spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
|
38
|
+
spec.add_development_dependency "simplecov", "~> 0.17.1"
|
37
39
|
spec.add_development_dependency "pry", "~> 0.12.2"
|
38
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocean-names
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rafael
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec_junit_formatter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.4.1
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.4.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.17.1
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.17.1
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: pry
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,6 +129,7 @@ executables: []
|
|
101
129
|
extensions: []
|
102
130
|
extra_rdoc_files: []
|
103
131
|
files:
|
132
|
+
- ".circleci/config.yml"
|
104
133
|
- ".gitignore"
|
105
134
|
- ".rspec"
|
106
135
|
- ".travis.yml"
|