compass_point 2.0.1 → 3.0.0

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: 7b99e6078b6e214a2020224b1420066e768a682e57b51d9ef069c82ec65a3b4e
4
- data.tar.gz: f1f6db879f7ec39b11a10e52a912b49772ebc8223206643cc36f9638cc79494e
3
+ metadata.gz: 58dc6a0e428a79c4f324f8203b4bd263b79e83a2bc27ed2b9275d737579f5b49
4
+ data.tar.gz: 6f7747c5f2298d8801a6f4c28636237c5ced151c5439826ec6db0aaa92cd5e14
5
5
  SHA512:
6
- metadata.gz: 2d5db222ac44ce803126e681b326da623baf170ced90d019f561ba89ee218c04e5732c38806aa31c44b1c17e6b8ae560d9d8485dde75a7408561cd7d75bee8b3
7
- data.tar.gz: 2e4c15921705aad607528930b87726ba180aa49f28b05bd2d68daa3e1bde908dfe04b252e705871067fbd44738e6d34ce0a2c50c04973949f5e1afdc8bfaa123
6
+ metadata.gz: 1afe4228022af269623dcdf5d0918ae87bd805773d6b08f1bc043197cc6d8b45c4bb7e569f56717b2ae3c42dcd861f7113c8d46d7bac1546155e10e0bc0a72b4
7
+ data.tar.gz: 6222b9724ca875db38cd2cf2213e53233463ce9e02cef98ee5664211bbc3212769bd4e25c524b0485380b798999a7b6c7563948508fa077ce5b71fa2a6c547ed
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-2023 Keith Morrison <keithm@infused.org>
1
+ Copyright (c) 2015-2024 Keith Morrison <keithm@infused.org>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -16,7 +16,7 @@ A Ruby library for working with compass points.
16
16
 
17
17
  Compass Point is compatible with the following versions of Ruby:
18
18
 
19
- * MRI Ruby 3.0.x, 3.1.x, 3.2.x, and 3.3.x
19
+ * MRI Ruby 3.1.x, 3.2.x, and 3.3.x
20
20
 
21
21
  ## Installation
22
22
 
@@ -68,7 +68,7 @@ example:
68
68
 
69
69
  ## License
70
70
 
71
- Copyright (c) 2015-2023 Keith Morrison <<keithm@infused.org>>
71
+ Copyright (c) 2015-2024 Keith Morrison <<keithm@infused.org>>
72
72
 
73
73
  Permission is hereby granted, free of charge, to any person
74
74
  obtaining a copy of this software and associated documentation
data/lib/compass_point.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class CompassPoint
2
- VERSION = '2.0.1'.freeze
2
+ VERSION = '3.0.0'.freeze
3
3
 
4
- COMPASS_BEARING_REGEX = /(n|s)\s(\d{1,3}).?\s(e|w)/.freeze
4
+ COMPASS_BEARING_REGEX = /(n|s)\s(\d{1,3}).?\s(e|w)/
5
5
 
6
6
  POINTS = {
7
7
  n: {min: 354.38, mid: 0.0, max: 5.62, name: 'North'},
@@ -41,9 +41,9 @@ class CompassPoint
41
41
  class << self
42
42
  def azimuth(s)
43
43
  input = normalize_input(s)
44
- if point = find_point(input)
44
+ if (point = find_point(input))
45
45
  point[:mid]
46
- elsif match = input.match(COMPASS_BEARING_REGEX)
46
+ elsif (match = input.match(COMPASS_BEARING_REGEX))
47
47
  azimuth_from_match(match)
48
48
  end
49
49
  end
@@ -96,15 +96,13 @@ class CompassPoint
96
96
  180
97
97
  end
98
98
 
99
- adjust = match[2].to_i
100
-
101
99
  operation = if (match[1] == 'n' && match[3] == 'w') || (match[1] == 's' && match[3] == 'e')
102
100
  :-
103
101
  else
104
102
  :+
105
103
  end
106
104
 
107
- base.send(operation, adjust)
105
+ base.send(operation, match[2].to_i)
108
106
  end
109
107
 
110
108
  def generate_compass_quadrant_bearing(b)
@@ -3,88 +3,87 @@ require 'spec_helper'
3
3
  describe CompassPoint do
4
4
  describe '.azimuth' do
5
5
  it 'returns mid point in degrees' do
6
- expect(CompassPoint.azimuth('N')).to eq 0.0
7
- expect(CompassPoint.azimuth(:nw)).to eq 315.0
8
- expect(CompassPoint.azimuth('sbw')).to eq 191.25
9
- expect(CompassPoint.azimuth('X')).to be_nil
10
- expect(CompassPoint.azimuth('Northeast by east')).to eq 56.25
11
- expect(CompassPoint.azimuth('N 27° E')).to eq 27
12
- expect(CompassPoint.azimuth('S 77° E')).to eq 103
13
- expect(CompassPoint.azimuth('S 2° E')).to eq 178
14
- expect(CompassPoint.azimuth('N 77° W')).to eq 283
15
- expect(CompassPoint.azimuth('N 20 W')).to eq 340
16
- expect(CompassPoint.azimuth('S 30° W')).to eq 210
6
+ expect(described_class.azimuth('N')).to eq 0.0
7
+ expect(described_class.azimuth(:nw)).to eq 315.0
8
+ expect(described_class.azimuth('sbw')).to eq 191.25
9
+ expect(described_class.azimuth('X')).to be_nil
10
+ expect(described_class.azimuth('Northeast by east')).to eq 56.25
11
+ expect(described_class.azimuth('N 27° E')).to eq 27
12
+ expect(described_class.azimuth('S 77° E')).to eq 103
13
+ expect(described_class.azimuth('S 2° E')).to eq 178
14
+ expect(described_class.azimuth('N 77° W')).to eq 283
15
+ expect(described_class.azimuth('N 20 W')).to eq 340
16
+ expect(described_class.azimuth('S 30° W')).to eq 210
17
17
  end
18
18
  end
19
19
 
20
20
  describe '.back_azimuth' do
21
21
  it 'returns opposite of azimuth' do
22
- expect(CompassPoint.back_azimuth('N')).to eq 180.0
23
- expect(CompassPoint.back_azimuth(:nw)).to eq 135.0
24
- expect(CompassPoint.back_azimuth('sbw')).to eq 11.25
25
- expect(CompassPoint.back_azimuth('X')).to be_nil
26
- expect(CompassPoint.back_azimuth('Northeast by east')).to eq 236.25
27
- expect(CompassPoint.back_azimuth('N 27° E')).to eq 207
28
- expect(CompassPoint.back_azimuth('S 77° E')).to eq 283
29
- expect(CompassPoint.back_azimuth('S 2° E')).to eq 358
30
- expect(CompassPoint.back_azimuth('N 77° W')).to eq 103
31
- expect(CompassPoint.back_azimuth('N 20 W')).to eq 160
32
- expect(CompassPoint.back_azimuth('S 30° W')).to eq 30
22
+ expect(described_class.back_azimuth('N')).to eq 180.0
23
+ expect(described_class.back_azimuth(:nw)).to eq 135.0
24
+ expect(described_class.back_azimuth('sbw')).to eq 11.25
25
+ expect(described_class.back_azimuth('X')).to be_nil
26
+ expect(described_class.back_azimuth('Northeast by east')).to eq 236.25
27
+ expect(described_class.back_azimuth('N 27° E')).to eq 207
28
+ expect(described_class.back_azimuth('S 77° E')).to eq 283
29
+ expect(described_class.back_azimuth('S 2° E')).to eq 358
30
+ expect(described_class.back_azimuth('N 77° W')).to eq 103
31
+ expect(described_class.back_azimuth('N 20 W')).to eq 160
32
+ expect(described_class.back_azimuth('S 30° W')).to eq 30
33
33
  end
34
34
  end
35
35
 
36
36
  describe '.min' do
37
37
  it 'returns min point in degrees' do
38
- expect(CompassPoint.min('N')).to eq 354.38
39
- expect(CompassPoint.min(:nw)).to eq 309.38
40
- expect(CompassPoint.min('sbw')).to eq 185.63
41
- expect(CompassPoint.min('X')).to be_nil
42
- expect(CompassPoint.min('Northeast by east')).to eq 50.63
38
+ expect(described_class.min('N')).to eq 354.38
39
+ expect(described_class.min(:nw)).to eq 309.38
40
+ expect(described_class.min('sbw')).to eq 185.63
41
+ expect(described_class.min('X')).to be_nil
42
+ expect(described_class.min('Northeast by east')).to eq 50.63
43
43
  end
44
44
  end
45
45
 
46
46
  describe '.max' do
47
47
  it 'returns max point in degrees' do
48
- expect(CompassPoint.max('N')).to eq 5.62
49
- expect(CompassPoint.max(:nw)).to eq 320.62
50
- expect(CompassPoint.max('sbw')).to eq 196.87
51
- expect(CompassPoint.max('X')).to be_nil
52
- expect(CompassPoint.max('Northeast by east')).to eq 61.87
48
+ expect(described_class.max('N')).to eq 5.62
49
+ expect(described_class.max(:nw)).to eq 320.62
50
+ expect(described_class.max('sbw')).to eq 196.87
51
+ expect(described_class.max('X')).to be_nil
52
+ expect(described_class.max('Northeast by east')).to eq 61.87
53
53
  end
54
54
  end
55
55
 
56
56
  describe '.min_max' do
57
57
  it 'returns [min, max]' do
58
- expect(CompassPoint.min_max('N')).to eq [354.38, 5.62]
59
- expect(CompassPoint.min_max(:nw)).to eq [309.38, 320.62]
60
- expect(CompassPoint.min_max('sbw')).to eq [185.63, 196.87]
61
- expect(CompassPoint.min_max('X')).to be_nil
62
- expect(CompassPoint.min_max('Northeast by east')).to eq [50.63, 61.87]
58
+ expect(described_class.min_max('N')).to eq [354.38, 5.62]
59
+ expect(described_class.min_max(:nw)).to eq [309.38, 320.62]
60
+ expect(described_class.min_max('sbw')).to eq [185.63, 196.87]
61
+ expect(described_class.min_max('X')).to be_nil
62
+ expect(described_class.min_max('Northeast by east')).to eq [50.63, 61.87]
63
63
  end
64
64
  end
65
65
 
66
66
  describe '.name' do
67
67
  it 'returns the points full name' do
68
- expect(CompassPoint.name('nnw')).to eq 'North northwest'
68
+ expect(described_class.name('nnw')).to eq 'North northwest'
69
69
  end
70
70
  end
71
71
 
72
72
  describe '.compass_quadrant_bearing' do
73
73
  it 'is' do
74
- expect(CompassPoint.compass_quadrant_bearing(0)).to eq 'N'
75
- expect(CompassPoint.compass_quadrant_bearing(27)).to eq 'N 27° E'
76
- expect(CompassPoint.compass_quadrant_bearing(27.4)).to eq 'N 27° E'
77
- expect(CompassPoint.compass_quadrant_bearing(27.7)).to eq 'N 28° E'
78
- expect(CompassPoint.compass_quadrant_bearing(90)).to eq 'E'
79
- expect(CompassPoint.compass_quadrant_bearing(103)).to eq 'S 77° E'
80
- expect(CompassPoint.compass_quadrant_bearing(178)).to eq 'S 2° E'
81
- expect(CompassPoint.compass_quadrant_bearing(180)).to eq 'S'
82
- expect(CompassPoint.compass_quadrant_bearing(210)).to eq 'S 30° W'
83
- expect(CompassPoint.compass_quadrant_bearing(270)).to eq 'W'
84
- expect(CompassPoint.compass_quadrant_bearing(283)).to eq 'N 77° W'
85
- expect(CompassPoint.compass_quadrant_bearing(340)).to eq 'N 20° W'
86
- expect(CompassPoint.compass_quadrant_bearing(360)).to eq 'N'
74
+ expect(described_class.compass_quadrant_bearing(0)).to eq 'N'
75
+ expect(described_class.compass_quadrant_bearing(27)).to eq 'N 27° E'
76
+ expect(described_class.compass_quadrant_bearing(27.4)).to eq 'N 27° E'
77
+ expect(described_class.compass_quadrant_bearing(27.7)).to eq 'N 28° E'
78
+ expect(described_class.compass_quadrant_bearing(90)).to eq 'E'
79
+ expect(described_class.compass_quadrant_bearing(103)).to eq 'S 77° E'
80
+ expect(described_class.compass_quadrant_bearing(178)).to eq 'S 2° E'
81
+ expect(described_class.compass_quadrant_bearing(180)).to eq 'S'
82
+ expect(described_class.compass_quadrant_bearing(210)).to eq 'S 30° W'
83
+ expect(described_class.compass_quadrant_bearing(270)).to eq 'W'
84
+ expect(described_class.compass_quadrant_bearing(283)).to eq 'N 77° W'
85
+ expect(described_class.compass_quadrant_bearing(340)).to eq 'N 20° W'
86
+ expect(described_class.compass_quadrant_bearing(360)).to eq 'N'
87
87
  end
88
88
  end
89
-
90
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: compass_point
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Morrison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-30 00:00:00.000000000 Z
11
+ date: 2023-12-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A Ruby library for working with compass points
14
14
  email: keithm@infused.org
@@ -37,14 +37,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 3.0.0
40
+ version: 3.1.0
41
41
  required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  requirements:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
46
  requirements: []
47
- rubygems_version: 3.4.13
47
+ rubygems_version: 3.5.3
48
48
  signing_key:
49
49
  specification_version: 4
50
50
  summary: A Ruby library for working with compass points