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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5919cc0295c96a6d3ff6d758cf4d9f335af867cb9b073c7c5f9651741c59eaf7
4
- data.tar.gz: f0182c2bf76843ef1bbebb8a0b3ea70298c28bd88fbd130378302595d2a8714a
3
+ metadata.gz: bae097bab35a19f1d7a9f8df2924387d6948fee8965cc308a1fffab8baedd53e
4
+ data.tar.gz: 9d798670d00d48cd2b93473385e1957ba166bf5ec28a385621517b62429a003a
5
5
  SHA512:
6
- metadata.gz: ea80aa09909ebce50e594c8e20b93f855722314a737b5b8060549e3d855e09079f487f26dc2d432117c891864d2a287dca6a68600bb0d55e729db66bc37e13a3
7
- data.tar.gz: 9022c5f62b25799bd081b9e2f7b6f4feeeaa3bc71eb4d6265b56968bceb3f4af946569d2ca8f37b55e8067980f925eb4b9675a97c8727f3413961db78097dd66
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
- Simple reverse geocoder for oceans/seas.
3
+ [![Gem Version](https://badge.fury.io/rb/ocean-names.svg)](https://badge.fury.io/rb/ocean-names)
4
+ [![CircleCI](https://circleci.com/gh/skcc321/ocean-names/tree/master.svg?style=svg)](https://circleci.com/gh/skcc321/ocean-names/tree/master)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/1f06ba3f12a4408c402b/maintainability)](https://codeclimate.com/github/skcc321/ocean-names/maintainability)
6
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/1f06ba3f12a4408c402b/test_coverage)](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", "id"=>"32", "longitude"=>-18.80876715914, "latitude"=>-33.73239551445, "min_x"=>-69.60083675371, "min_y"=>-60, "max_x"=>20.00904913827, "max_y"=>0.07510554798, "area"=>40501812, "mrgid"=>1914}
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", "id"=>"32", "longitude"=>-18.80876715914, "latitude"=>-33.73239551445, "min_x"=>-69.60083675371, "min_y"=>-60, "max_x"=>20.00904913827, "max_y"=>0.07510554798, "area"=>40501812, "mrgid"=>1914}
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", "id"=>"45", "longitude"=>79.20858601429, "latitude"=>-32.72458381046, "min_x"=>20.00261595272, "min_y"=>-60, "max_x"=>146.8982192222, "max_y"=>10.44499945636, "area"=>58230954, "mrgid"=>1904}
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", "id"=>"62", "longitude"=>132.7165581317, "latitude"=>-36.72591576597, "min_x"=>117.6141982382, "min_y"=>-43.56601647135, "max_x"=>146.23115575344, "max_y"=>-31.46366941901, "area"=>1326209, "mrgid"=>4276}
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", "id"=>"52", "longitude"=>135.13274500727, "latitude"=>40.5084302428, "min_x"=>125.8013889, "min_y"=>32.57501368363, "max_x"=>142.2638347153, "max_y"=>51.74733316939, "area"=>1066307, "mrgid"=>4307}
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", "id"=>"50", "longitude"=>125.21708986497, "latitude"=>29.13089135213, "min_x"=>118.47804582106, "min_y"=>24.05760752069, "max_x"=>131.1322036827, "max_y"=>33.37195920955, "area"=>761356, "mrgid"=>4302}
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&.reject do |key|
35
+ end
36
+
37
+ rec&.reject do |key|
25
38
  key == "geometry"
26
39
  end
27
40
  end
@@ -1,5 +1,5 @@
1
1
  module Ocean
2
2
  module Names
3
- VERSION = "0.2.4"
3
+ VERSION = "0.3.4"
4
4
  end
5
5
  end
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.2.4
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-20 00:00:00.000000000 Z
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"