ocean-names 0.2.4 → 0.3.4

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: 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"