compass_point 1.0.0 → 1.0.1

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
  SHA1:
3
- metadata.gz: 572d6a5c62a94371ac1cfc51a9159a6210a4a7c6
4
- data.tar.gz: 662e06d62053664bdce6e7077dd705677a8a22bb
3
+ metadata.gz: 8e46d4553f9de5ae11fab63be88ffea5b32b21b1
4
+ data.tar.gz: 9103ff880351b8f3469e912d27fcd351dc9b34e5
5
5
  SHA512:
6
- metadata.gz: d513cf9a90db8df32d9610fd57c44f2fd3f32d54ca2f98799cf144ca35511a4962fe6f8fb8c5d756bb2641c13efd5292544392d5646cccdad9de70da4d4a6462
7
- data.tar.gz: be80b30a04996483a29afc9cb55678f215ac2522f6c49804a43afc3147131e73f215f60342b9cdc34a1c4728649bbd93d0697d7c151deb6f4b9a5ac70c31cba3
6
+ metadata.gz: 3060a1b29300b947838f00e6d4083f0985b11bbc90b16c0840addf77bd83f4e2e58c205708cbe4e3e551bb91aa78788bb2090bb25057e49935ac06cb8dc64f85
7
+ data.tar.gz: 03e91329bc09f28df2bff07a1584fbbe1f5b1cbe4fa422d9a966bd03c0d7e76aad81071df579abde78ac300875ec1f8b453ce97c30adcf2e0c9fc04c1f5387e8
data/Gemfile.travis ADDED
@@ -0,0 +1,8 @@
1
+ gemspec
2
+ source 'https://rubygems.org'
3
+
4
+ group :test do
5
+ gem 'rubysl', :platform => :rbx
6
+ gem 'rspec'
7
+ gem 'codeclimate-test-reporter', :require => false, :platform => :ruby
8
+ end
data/README.md CHANGED
@@ -21,12 +21,13 @@ Compass Point is tested to work with the following versions of ruby:
21
21
 
22
22
  ## Installation
23
23
 
24
- ```
25
- gem install compass_point
26
- ```
24
+ gem install compass_point
27
25
 
28
26
  ## Basic Usage
29
27
 
28
+ Given an abbreviation such as "NW" or "SE", `azimuth` will
29
+ return the corresponding azimuth in degrees from 0 to 360:
30
+
30
31
  require 'compass_point'
31
32
 
32
33
  CompassPoint.azimuth('N') #=> 0.0
@@ -34,6 +35,14 @@ gem install compass_point
34
35
  CompassPoint.azimuth('swbs') #=> 213.75
35
36
 
36
37
 
38
+ You can also get the minimum and maximum azimuths for any
39
+ abbreviation with `min`, `max` and `min_max`:
40
+
41
+ CompassPoint.min('E') #=> 84.38
42
+ CompassPoint.max('E') #=> 95.62
43
+ CompassPoint.min_max('E') #=> [84.38, 95.62]
44
+
45
+
37
46
  ## License
38
47
 
39
48
  Copyright (c) 2015 Keith Morrison <<keithm@infused.org>>
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup(:default, :development)
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new :spec do |t|
6
+ t.rspec_opts = %w(--color)
7
+ end
8
+
9
+ RSpec::Core::RakeTask.new :specdoc do |t|
10
+ t.rspec_opts = %w(-fl)
11
+ end
12
+
13
+ task :default => :spec
14
+
15
+ desc "Open an irb session preloaded with this library"
16
+ task :console do
17
+ sh "irb -rubygems -I lib -r compass_point.rb"
18
+ end
Binary file
data/lib/compass_point.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  class CompassPoint
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
 
4
4
  POINTS = {
5
5
  n: {min: 354.38, mid: 0.0, max: 5.62},
@@ -37,15 +37,33 @@ class CompassPoint
37
37
  }
38
38
 
39
39
  class << self
40
- def azimuth(compass_point)
41
- key = normalize_key(compass_point)
40
+ def azimuth(abbreviation)
41
+ key = normalize_abbreviation(abbreviation)
42
42
  point = POINTS[key]
43
43
  point && point[:mid]
44
44
  end
45
45
 
46
+ def min(abbreviation)
47
+ key = normalize_abbreviation(abbreviation)
48
+ point = POINTS[key]
49
+ point && point[:min]
50
+ end
51
+
52
+ def max(abbreviation)
53
+ key = normalize_abbreviation(abbreviation)
54
+ point = POINTS[key]
55
+ point && point[:max]
56
+ end
57
+
58
+ def min_max(abbreviation)
59
+ key = normalize_abbreviation(abbreviation)
60
+ point = POINTS[key]
61
+ point && [point[:min], point[:max]]
62
+ end
63
+
46
64
  private
47
65
 
48
- def normalize_key(compass_point)
66
+ def normalize_abbreviation(compass_point)
49
67
  compass_point.to_s.downcase.to_sym
50
68
  end
51
69
  end
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe CompassPoint do
4
4
  describe '.azimuth' do
5
-
6
- it 'returns mid point' do
5
+ it 'returns mid point in degrees' do
7
6
  expect(CompassPoint.azimuth('N')).to eq 0.0
8
7
  expect(CompassPoint.azimuth(:nw)).to eq 315.0
9
8
  expect(CompassPoint.azimuth('sbw')).to eq 191.25
@@ -11,4 +10,31 @@ describe CompassPoint do
11
10
  end
12
11
  end
13
12
 
13
+ describe '.min' do
14
+ it 'returns min point in degrees' do
15
+ expect(CompassPoint.min('N')).to eq 354.38
16
+ expect(CompassPoint.min(:nw)).to eq 309.38
17
+ expect(CompassPoint.min('sbw')).to eq 185.63
18
+ expect(CompassPoint.min('X')).to be_nil
19
+ end
20
+ end
21
+
22
+ describe '.max' do
23
+ it 'returns max point in degrees' do
24
+ expect(CompassPoint.max('N')).to eq 5.62
25
+ expect(CompassPoint.max(:nw)).to eq 320.62
26
+ expect(CompassPoint.max('sbw')).to eq 196.87
27
+ expect(CompassPoint.max('X')).to be_nil
28
+ end
29
+ end
30
+
31
+ describe '.min_max' do
32
+ it 'returns [min, max]' do
33
+ expect(CompassPoint.min_max('N')).to eq [354.38, 5.62]
34
+ expect(CompassPoint.min_max(:nw)).to eq [309.38, 320.62]
35
+ expect(CompassPoint.min_max('sbw')).to eq [185.63, 196.87]
36
+ expect(CompassPoint.min_max('X')).to be_nil
37
+ end
38
+ end
39
+
14
40
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,9 @@
1
+ begin
2
+ require 'codeclimate-test-reporter'
3
+ CodeClimate::TestReporter.start
4
+ rescue LoadError
5
+ end
6
+
1
7
  require 'compass_point'
2
8
  require 'rspec'
3
9
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compass_point
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Morrison
@@ -20,9 +20,12 @@ extra_rdoc_files:
20
20
  files:
21
21
  - Gemfile
22
22
  - Gemfile.lock
23
+ - Gemfile.travis
23
24
  - Guardfile
24
25
  - LICENSE
25
26
  - README.md
27
+ - Rakefile
28
+ - compass_point-1.0.0.gem
26
29
  - compass_point.gemspec
27
30
  - lib/compass_point.rb
28
31
  - spec/compass_point_spec.rb