angles 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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