angles 0.0.2 → 0.0.3

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 03ce70cedcd547f110671cd2d7d64c060e9d03cb
4
+ data.tar.gz: 1491700361088648a564710e2cbe821ef045d62f
5
+ SHA512:
6
+ metadata.gz: 5067d7792a0077d6b4fed242160b60721a53d838b2b09bcc2aa4e4dbbc525775f17e6a94309400e6c4e0d5a1102577a213d6cee2779c7e199cdf159170b6e080
7
+ data.tar.gz: 9edfb312afc60b8c22c5a64d4514b589f00ccb8ac7ef0c4ec3011598e71ab276bf1ebc66b1651494cd7b1cd6d663bfbfd4329d07c6f0999438e0c4833d667c8e
@@ -24,8 +24,8 @@
24
24
  <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
25
25
  <COMMAND_CONFIG_SETTINGS_ID NAME="GEM_NAME" VALUE="bundler" />
26
26
  <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_NAME" VALUE="gem" />
27
- <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_ARGS" VALUE="install ./angles-0.0.1.gem" />
28
- <COMMAND_CONFIG_SETTINGS_ID NAME="WORKING_DIR" VALUE="install ./angles-0.0.1.gem" />
27
+ <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_ARGS" VALUE="install ./angles-*.gem" />
28
+ <COMMAND_CONFIG_SETTINGS_ID NAME="WORKING_DIR" VALUE="install ./angles-*.gem" />
29
29
  <RunnerSettings RunnerId="RubyRunner" />
30
30
  <ConfigurationWrapper RunnerId="RubyRunner" />
31
31
  <method />
@@ -49,15 +49,50 @@
49
49
  <ConfigurationWrapper RunnerId="RubyRunner" />
50
50
  <method />
51
51
  </configuration>
52
+ <configuration default="false" name="angles" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
53
+ <module name="angles" />
54
+ <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
55
+ <RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/lib" />
56
+ <RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
57
+ <RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
58
+ <RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
59
+ <envs />
60
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
61
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
62
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov" />
63
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
64
+ <RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/lib/angles.rb" />
65
+ <RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
66
+ <RunnerSettings RunnerId="RubyRunner" />
67
+ <ConfigurationWrapper RunnerId="RubyRunner" />
68
+ <method />
69
+ </configuration>
70
+ <configuration default="false" name="test" type="RubyRunConfigurationType" factoryName="Ruby" temporary="true">
71
+ <module name="angles" />
72
+ <RUBY_RUN_CONFIG NAME="RUBY_ARGS" VALUE="-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)" />
73
+ <RUBY_RUN_CONFIG NAME="WORK DIR" VALUE="$MODULE_DIR$/test" />
74
+ <RUBY_RUN_CONFIG NAME="SHOULD_USE_SDK" VALUE="false" />
75
+ <RUBY_RUN_CONFIG NAME="ALTERN_SDK_NAME" VALUE="" />
76
+ <RUBY_RUN_CONFIG NAME="myPassParentEnvs" VALUE="true" />
77
+ <envs />
78
+ <EXTENSION ID="BundlerRunConfigurationExtension" bundleExecEnabled="true" />
79
+ <EXTENSION ID="JRubyRunConfigurationExtension" NailgunExecEnabled="false" />
80
+ <EXTENSION ID="RubyCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" track_test_folders="true" runner="rcov" />
81
+ <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
82
+ <RUBY_RUN_CONFIG NAME="SCRIPT_PATH" VALUE="$MODULE_DIR$/test/test.rb" />
83
+ <RUBY_RUN_CONFIG NAME="SCRIPT_ARGS" VALUE="" />
84
+ <RunnerSettings RunnerId="RubyRunner" />
85
+ <ConfigurationWrapper RunnerId="RubyRunner" />
86
+ <method />
87
+ </configuration>
52
88
  </component>
53
89
  <component name="NewModuleRootManager">
54
90
  <content url="file://$MODULE_DIR$">
55
91
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
56
92
  </content>
57
- <orderEntry type="inheritedJdk" />
93
+ <orderEntry type="jdk" jdkName="ruby-2.0.0-p598" jdkType="RUBY_SDK" />
58
94
  <orderEntry type="sourceFolder" forTests="false" />
59
- <orderEntry type="library" scope="PROVIDED" name="bundler (v1.7.2, ruby-1.9.3-p545) [gem]" level="application" />
60
- <orderEntry type="library" scope="PROVIDED" name="rake (v10.3.2, ruby-1.9.3-p545) [gem]" level="application" />
61
- <orderEntry type="library" scope="PROVIDED" name="ratapprox (v0.0.1, ruby-1.9.3-p545) [gem]" level="application" />
95
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v1.8.4, ruby-2.0.0-p598) [gem]" level="application" />
96
+ <orderEntry type="library" scope="PROVIDED" name="ratapprox (v0.0.1, ruby-2.0.0-p598) [gem]" level="application" />
62
97
  </component>
63
98
  </module>
@@ -13,8 +13,8 @@
13
13
  <EXTENSION ID="org.jetbrains.plugins.ruby.motion.run.MotionSimulatorRunExtension" />
14
14
  <COMMAND_CONFIG_SETTINGS_ID NAME="GEM_NAME" VALUE="bundler" />
15
15
  <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_NAME" VALUE="gem" />
16
- <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_ARGS" VALUE="install ./angles-0.0.1.gem" />
17
- <COMMAND_CONFIG_SETTINGS_ID NAME="WORKING_DIR" VALUE="install ./angles-0.0.1.gem" />
16
+ <COMMAND_CONFIG_SETTINGS_ID NAME="EXECUTABLE_ARGS" VALUE="install ./angles-*.gem" />
17
+ <COMMAND_CONFIG_SETTINGS_ID NAME="WORKING_DIR" VALUE="install ./angles-*.gem" />
18
18
  <RunnerSettings RunnerId="RubyRunner" />
19
19
  <ConfigurationWrapper RunnerId="RubyRunner" />
20
20
  <method />
Binary file
@@ -3,12 +3,20 @@ require "angles/version"
3
3
  require 'ratapprox'
4
4
 
5
5
  class Angle
6
+ # make class comparable
7
+ include Comparable
8
+
9
+ # make mode and display attributes mutable
10
+ attr_reader :angle
11
+ attr_accessor :mode, :display
12
+
6
13
  # constants
7
14
  @@PI = Math::PI
8
15
  @@TWO_PI = Math::PI * 2
9
16
  @@PI_SYMBOL = "\u03c0"
10
17
  @@DEGREE_SYMBOL = "\u00b0"
11
18
  @@SECONDS_DECIMAL_PLACES = 2
19
+ @@ROUND_SECONDS = 10
12
20
  @@ROUND_TRIG = 12
13
21
 
14
22
  # initializers
@@ -35,53 +43,65 @@ class Angle
35
43
  self
36
44
  end
37
45
 
38
- # getters and setters
39
-
40
- def mode
41
- @mode
42
- end
43
-
44
- def display
45
- @display
46
- end
47
-
48
- def set_display(display)
49
- @display = display
50
- end
51
-
52
- def angle
53
- @angle
54
- end
46
+ # getters
55
47
 
56
48
  def radians
57
49
  self.angle
58
50
  end
59
51
 
52
+ def radians=(radians)
53
+ self.from_radians radians
54
+ end
55
+
60
56
  def degrees
61
57
  Angle.radians_to_degrees(self.radians).to_f
62
58
  end
63
59
 
60
+ def degrees=(degrees)
61
+ self.from_degrees degrees
62
+ end
63
+
64
64
  def d
65
65
  self.degrees.floor
66
66
  end
67
67
 
68
+ def d=(degrees)
69
+ self.degrees = self.degrees - self.d + degrees
70
+ end
71
+
68
72
  def minutes
69
73
  self.degrees * 60
70
74
  end
71
75
 
76
+ def minutes=(minutes)
77
+ self.from_degrees minutes.to_f / 60
78
+ end
79
+
72
80
  def m
73
81
  self.minutes.floor % 60
74
82
  end
75
83
 
84
+ def m=(minutes)
85
+ self.minutes = self.minutes - self.m + minutes
86
+ end
87
+
76
88
  def seconds
77
- self.minutes * 60
89
+ (self.minutes * 60).round @@ROUND_SECONDS
90
+ end
91
+
92
+ def seconds=(seconds)
93
+ self.from_degrees seconds.to_f / 3600
78
94
  end
79
95
 
80
96
  def s
81
- self.seconds.floor % 60
97
+ (self.seconds % 60).round @@ROUND_SECONDS
82
98
  end
83
99
 
84
- # normailize a value of degrees to [0, 360)
100
+ def s=(seconds)
101
+ self.seconds = self.seconds - self.s + seconds
102
+ end
103
+
104
+ # normalize a value of degrees to [0, 360)
85
105
  def self.normalize_degrees(degrees)
86
106
  degrees -= 360 while degrees >= 360
87
107
  degrees += 360 while degrees < 0
@@ -288,7 +308,7 @@ class Angle
288
308
  end
289
309
 
290
310
  def obtuse?
291
- d = self.degress
311
+ d = self.degrees
292
312
  d > 90 and d < 180
293
313
  end
294
314
 
@@ -421,28 +441,26 @@ class Angle
421
441
  # operator overloads
422
442
 
423
443
  def +(other_angle)
424
- new_angle = self.clone
425
- new_angle.from_radians(Angle.normalize_radians(new_angle.angle + other_angle.angle))
426
- new_angle
444
+ self.clone.from_radians(Angle.normalize_radians(self.radians + other_angle.angle))
427
445
  end
428
446
 
429
447
  def -(other_angle)
430
- new_angle = self.clone
431
- new_angle.from_radians(Angle.normalize_radians(new_angle.angle - other_angle.angle))
432
- new_angle
448
+ self.clone.from_radians(Angle.normalize_radians(self.radians - other_angle.angle))
433
449
  end
434
450
 
435
451
  def *(number)
436
- new_angle = self.clone
437
- new_angle.from_radians(Angle.normalize_radians(new_angle.angle * number))
438
- new_angle
452
+ self.clone.from_radians(Angle.normalize_radians(self.radians * number))
439
453
  end
440
454
 
441
455
  def /(number)
442
- new_angle = self.clone
443
- new_angle.from_radians(Angle.normalize_radians(new_angle.angle / number))
444
- new_angle
456
+ self.clone.from_radians(Angle.normalize_radians(self.radians / number))
457
+ end
458
+
459
+ # add comparison operators
460
+ def <=>(other_angle)
461
+ self.angle <=> other_angle.angle
445
462
  end
463
+
446
464
  end
447
465
 
448
466
  def degrees(degrees)
@@ -1,3 +1,3 @@
1
1
  module Angles
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -0,0 +1 @@
1
+ require_relative '../lib/angles.rb'
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: angles
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Gregory H. Halverson
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-03-06 00:00:00.000000000 Z
11
+ date: 2015-03-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,17 +41,15 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: ratapprox
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: Encapsulates angles in Ruby. Easily switch between degrees and radians.
@@ -80,32 +73,34 @@ files:
80
73
  - LICENSE.txt
81
74
  - README.md
82
75
  - Rakefile
76
+ - angles-0.0.3.gem
83
77
  - angles.gemspec
84
78
  - lib/angles.rb
85
79
  - lib/angles/version.rb
80
+ - test/test.rb
86
81
  homepage: https://github.com/gregory-halverson/angles
87
82
  licenses:
88
83
  - MIT
84
+ metadata: {}
89
85
  post_install_message:
90
86
  rdoc_options: []
91
87
  require_paths:
92
88
  - lib
93
89
  required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
90
  requirements:
96
- - - ! '>='
91
+ - - '>='
97
92
  - !ruby/object:Gem::Version
98
93
  version: '0'
99
94
  required_rubygems_version: !ruby/object:Gem::Requirement
100
- none: false
101
95
  requirements:
102
- - - ! '>='
96
+ - - '>='
103
97
  - !ruby/object:Gem::Version
104
98
  version: '0'
105
99
  requirements: []
106
100
  rubyforge_project:
107
- rubygems_version: 1.8.28
101
+ rubygems_version: 2.0.15
108
102
  signing_key:
109
- specification_version: 3
103
+ specification_version: 4
110
104
  summary: Angle class
111
- test_files: []
105
+ test_files:
106
+ - test/test.rb