vector2d 0.0.5 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/.document ADDED
@@ -0,0 +1,5 @@
1
+ README.rdoc
2
+ lib/**/*.rb
3
+ bin/*
4
+ features/**/*.feature
5
+ LICENSE
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Inge Jørgensen
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,32 @@
1
+ == Vector2d
2
+
3
+ Vector2d allows for easy handling of two-dimensionals coordinates and vectors.
4
+ It's very flexible, most methods accepts arguments as strings, arrays, hashes
5
+ or Vector2d objects.
6
+
7
+ == Licence
8
+
9
+ (The MIT License)
10
+
11
+ Copyright (c) 2006-2009 Inge Jørgensen
12
+
13
+ Permission is hereby granted, free of charge, to any person
14
+ obtaining a copy of this software and associated documentation
15
+ files (the "Software"), to deal in the Software without
16
+ restriction, including without limitation the rights to use,
17
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
18
+ copies of the Software, and to permit persons to whom the
19
+ Software is furnished to do so, subject to the following
20
+ conditions:
21
+
22
+ The above copyright notice and this permission notice shall be
23
+ included in all copies or substantial portions of the Software.
24
+
25
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
27
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
29
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
30
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
32
+ OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,83 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "vector2d"
8
+ gem.summary = %Q{Vector2d allows for easy handling of two-dimensionals coordinates and vectors}
9
+ gem.email = "inge@elektronaut.no"
10
+ gem.homepage = "http://github.com/elektronaut/vector2d"
11
+ gem.authors = ["Inge Jørgensen"]
12
+ gem.rubyforge_project = 'vector2d'
13
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
14
+ end
15
+
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'rake/testtask'
21
+ Rake::TestTask.new(:test) do |test|
22
+ test.libs << 'lib' << 'test'
23
+ test.pattern = 'test/**/*_test.rb'
24
+ test.verbose = true
25
+ end
26
+
27
+ begin
28
+ require 'rcov/rcovtask'
29
+ Rcov::RcovTask.new do |test|
30
+ test.libs << 'test'
31
+ test.pattern = 'test/**/*_test.rb'
32
+ test.verbose = true
33
+ end
34
+ rescue LoadError
35
+ task :rcov do
36
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
37
+ end
38
+ end
39
+
40
+ begin
41
+ require 'rake/contrib/sshpublisher'
42
+ namespace :rubyforge do
43
+
44
+ desc "Release gem and RDoc documentation to RubyForge"
45
+ task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
46
+
47
+ namespace :release do
48
+ desc "Publish RDoc to RubyForge."
49
+ task :docs => [:rdoc] do
50
+ config = YAML.load(
51
+ File.read(File.expand_path('~/.rubyforge/user-config.yml'))
52
+ )
53
+
54
+ host = "#{config['username']}@rubyforge.org"
55
+ remote_dir = "/var/www/gforge-projects/the-perfect-gem/"
56
+ local_dir = 'rdoc'
57
+
58
+ Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
59
+ end
60
+ end
61
+ end
62
+ rescue LoadError
63
+ puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
64
+ end
65
+
66
+ task :default => :test
67
+
68
+ require 'rake/rdoctask'
69
+ Rake::RDocTask.new do |rdoc|
70
+ if File.exist?('VERSION.yml')
71
+ config = YAML.load(File.read('VERSION.yml'))
72
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
73
+ else
74
+ version = ""
75
+ end
76
+
77
+ rdoc.rdoc_dir = 'rdoc'
78
+ rdoc.title = "vector2d #{version}"
79
+ rdoc.rdoc_files.include('README*')
80
+ rdoc.rdoc_files.include('lib/**/*.rb')
81
+ end
82
+
83
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.5.2
data/lib/vector2d.rb CHANGED
@@ -1,157 +1,151 @@
1
- #--
2
- # Copyright (c) 2006 Inge Jørgensen <inge@elektronaut.no>
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- #++
23
-
24
-
25
- # Class for for easy handling of two-dimensional coordinates. It's forte is argument flexibility,
26
- # methods that take vectors accepts arguments in many forms. See Vector2d.new for details and examples.
27
- class Vector2d
28
-
29
- # X axis
30
- attr_accessor :x
31
- # Y axis
32
- attr_accessor :y
33
-
34
-
35
-
36
- # Create a new vector from args. The following examples are equal:
37
- # Vector2d.new( 150, 100 )
38
- # Vector2d.new( 150.0, 100.0 )
39
- # Vector2d.new( "150x100" )
40
- # Vector2d.new( "150.0x100.0" )
41
- # Vector2d.new( [150,100} )
42
- # Vector2d.new( { :x => 150, :y => 100 } )
43
- # Vector2d.new( { "x" => 150.0, "y" => 100.0 } )
44
- # Vector2d.new( Vector2d.new( 150, 100 ) )
45
- def initialize( *args )
46
- args.flatten!
47
- if ( args.length == 1 )
48
- if ( args[0].kind_of?( String ) && args[0].match( /^[\s]*[\d\.]*[\s]*x[\s]*[\d\.]*[\s]*$/ ) )
49
- args = args[0].split( "x" )
50
- elsif args[0].kind_of?( Vector2d )
51
- args = [ args[0].x, args[0].y ]
52
- elsif args[0].kind_of?( Hash )
53
- args[0] = args[0][:x] if args[0][:x]
54
- args[0] = args[0]["x"] if args[0]["x"]
55
- args[1] = args[0][:y] if args[0][:y]
56
- args[1] = args[0]["y"] if args[0]["y"]
57
- else
58
- args = [ args[0], args[0] ]
59
- end
60
- end
61
- @x, @y = args[0].to_f, args[1].to_f
62
- end
63
-
64
-
65
-
66
- # Compare two vectors
67
- def ==( comp )
68
- ( comp.x == @x && comp.y == y )
69
- end
70
-
71
-
72
-
73
- # Get a String representation of vector.
74
- # Vector2d.new( 150, 100 ).to_s # "150x100"
75
- def to_s; "#{@x}x#{@y}"; end
76
-
77
-
78
-
79
- # Get length of vector.
80
- def length; Math.sqrt((@x*@x)+(@y*@y)); end
81
-
82
- # Set new length.
83
- def length= ( new_length )
84
- v = self * (new_length/length)
85
- @x, @y = v.x, v.y
86
- end
87
-
88
-
89
-
90
- # Normalize vector (set length to 1.0)
91
- def normalize; self.dup.normalize!; end
92
- # In-place form of Vector2d.normalize.
93
- def normalize!; length = 1.0; self; end
94
-
95
-
96
- # Round coordinates to nearest integer.
97
- def round; self.dup.round!; end
98
- # In-place form of Vector2d.round.
99
- def round!; @x, @y = @x.round, @y.round; self; end
100
-
101
-
102
- # Get the aspect ratio of the vector, returns a Float.
103
- def aspect_ratio; (@x/@y).abs; end
104
-
105
-
106
-
107
- # Multiply vectors. If args is a single Numeric, both axis will be multiplied.
108
- def * ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x * v.x, @y * v.y ); end
109
- # Divide vectors. If args is a single Numeric, both axis will be divided.
110
- def / ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x / v.x, @y / v.y ); end
111
- # Add vectors. If args is a single Numeric, it will be added to both axis.
112
- def + ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x + v.x, @y + v.y ); end
113
- # Subtract vectors. If args is a single Numeric, it will be subtracted from both axis.
114
- def - ( *vector_or_number ); v = Vector2d::new( vector_or_number ); Vector2d.new( @x - v.x, @y - v.y ); end
115
-
116
-
117
-
118
- # Constrain/expand so that both coordinates fit within (the square implied by) another vector.
119
- # This is useful for resizing images to fit a certain size while keeping aspect ratio.
120
- #
121
- # == Examples
122
- #
123
- # my_image = Vector2d.new( "320x200" ) # Creates a new vector object
124
- # my_image.constrain_both( 100 ) # Returns a new vector: x=100, y=63
125
- # my_image.constrain_both( 150, 50 ) # Returns a new vector: x=80, y=50
126
- # my_image.constrain_both( "150x50" ) # Equal to constrain_both( 150, 50 )
127
- # my_image.constrain_both( "x100" ) # Returns a new vector: x=160, y=100
128
- #
129
- # == Note
130
- #
131
- # Either axis will be disregarded if zero or nil (see the last example). This is a feature, not a bug. ;)
132
- def constrain_both( *vector_or_number )
133
- scale = Vector2d::new( vector_or_number ) / self
134
- ( self * ( (scale.y==0||(scale.x>0&&scale.x<scale.y) ) ? scale.x : scale.y ) )
135
- end
136
-
137
-
138
-
139
- # Constrain/expand so that one of the coordinates fit within (the square implied by) another vector.
140
- #
141
- # == Example
142
- #
143
- # my_image = Vector2d.new( "320x200" ) # Creates a new vector object
144
- # my_image.constrain_one( 100, 100 ) # Returns a new vector: x=160, y=100
145
- def constrain_one( *vector_or_number )
146
- scale = Vector2d::new( vector_or_number ) / self
147
- if ( scale.x > 0 && scale.y > 0 )
148
- scale = ( scale.x<scale.y) ? scale.y : scale.x
149
- self * scale
150
- else
151
- constrain_both( args )
152
- end
153
- end
154
-
155
- end #class Vector2d
156
-
157
-
1
+ # Vector2d allows for easy handling of two-dimensionals coordinates and vectors.
2
+ # It's very flexible, most methods accepts arguments as strings, arrays, hashes
3
+ # or Vector2d objects.
4
+ class Vector2d
5
+
6
+ # X axis
7
+ attr_accessor :x
8
+ # Y axis
9
+ attr_accessor :y
10
+
11
+ # Creates a new vector.
12
+ # The following examples are all valid:
13
+ #
14
+ # Vector2d.new(150, 100)
15
+ # Vector2d.new(150.0, 100.0)
16
+ # Vector2d.new("150x100")
17
+ # Vector2d.new("150.0x100.0")
18
+ # Vector2d.new([150,100})
19
+ # Vector2d.new({:x => 150, :y => 100})
20
+ # Vector2d.new({"x" => 150.0, "y" => 100.0})
21
+ # Vector2d.new(Vector2d.new(150, 100))
22
+ def initialize(*args)
23
+ args.flatten!
24
+ if (args.length == 1)
25
+ if (args[0].kind_of?(String) && args[0].match(/^[\s]*[\d\.]*[\s]*x[\s]*[\d\.]*[\s]*$/))
26
+ args = args[0].split("x")
27
+ elsif args[0].kind_of?(Vector2d)
28
+ args = [args[0].x, args[0].y]
29
+ elsif args[0].kind_of?(Hash)
30
+ args[0] = args[0][:x] if args[0][:x]
31
+ args[0] = args[0]["x"] if args[0]["x"]
32
+ args[1] = args[0][:y] if args[0][:y]
33
+ args[1] = args[0]["y"] if args[0]["y"]
34
+ else
35
+ args = [args[0], args[0]]
36
+ end
37
+ end
38
+ @x, @y = args[0].to_f, args[1].to_f
39
+ end
40
+
41
+ # Compares two vectors.
42
+ def ==(comp)
43
+ ( comp.x == @x && comp.y == y )
44
+ end
45
+
46
+ # Returns a string representation of the vector.
47
+ #
48
+ # Example:
49
+ # Vector2d.new( 150, 100 ).to_s # "150x100"
50
+ def to_s
51
+ "#{@x}x#{@y}"
52
+ end
53
+
54
+ # Length of vector
55
+ def length
56
+ Math.sqrt((@x*@x)+(@y*@y))
57
+ end
58
+
59
+ # Set new length.
60
+ def length=(new_length)
61
+ v = self * (new_length/length)
62
+ @x, @y = v.x, v.y
63
+ end
64
+
65
+ # Returns a normalized (length = 1.0) version of the vector.
66
+ def normalize
67
+ self.dup.normalize!
68
+ end
69
+
70
+ # In-place form of Vector2d.normalize.
71
+ def normalize!
72
+ self.length = 1.0
73
+ self
74
+ end
75
+
76
+ # Rounds coordinates to nearest integer.
77
+ def round
78
+ self.dup.round!
79
+ end
80
+
81
+ # In-place form of Vector2d.round.
82
+ def round!
83
+ @x, @y = @x.round, @y.round
84
+ self
85
+ end
86
+
87
+ # Returns the aspect ratio of the vector.
88
+ def aspect_ratio
89
+ (@x/@y).abs
90
+ end
91
+
92
+ # Multiply vectors. If args is a single Numeric, both axis will be multiplied.
93
+ def *(*vector_or_number)
94
+ v = Vector2d::new(vector_or_number)
95
+ Vector2d.new(@x*v.x, @y*v.y)
96
+ end
97
+
98
+ # Divide vectors. If args is a single Numeric, both axis will be divided.
99
+ def /(*vector_or_number)
100
+ v = Vector2d::new(vector_or_number)
101
+ Vector2d.new(@x/v.x, @y/v.y)
102
+ end
103
+
104
+ # Add vectors. If args is a single Numeric, it will be added to both axis.
105
+ def +(*vector_or_number)
106
+ v = Vector2d::new(vector_or_number)
107
+ Vector2d.new(@x+v.x, @y+v.y)
108
+ end
109
+
110
+ # Subtract vectors. If args is a single Numeric, it will be subtracted from both axis.
111
+ def -(*vector_or_number)
112
+ v = Vector2d::new(vector_or_number)
113
+ Vector2d.new(@x-v.x, @y-v.y)
114
+ end
115
+
116
+ # Constrain/expand so that both coordinates fit within (the square implied by) another vector.
117
+ # This is useful for resizing images to fit a certain size while keeping aspect ratio.
118
+ #
119
+ # == Examples
120
+ #
121
+ # my_image = Vector2d.new("320x200") # Creates a new vector object
122
+ # my_image.constrain_both(100) # Returns a new vector: x=100, y=63
123
+ # my_image.constrain_both(150, 50) # Returns a new vector: x=80, y=50
124
+ # my_image.constrain_both("150x50") # Equal to constrain_both( 150, 50 )
125
+ # my_image.constrain_both("x100") # Returns a new vector: x=160, y=100
126
+ #
127
+ # == Note
128
+ #
129
+ # Either axis will be disregarded if zero or nil (see the last example). This is a feature, not a bug. ;)
130
+ def constrain_both(*vector_or_number)
131
+ scale = Vector2d::new(vector_or_number) / self
132
+ (self * ((scale.y==0||(scale.x>0&&scale.x<scale.y)) ? scale.x : scale.y))
133
+ end
134
+
135
+ # Constrain/expand so that one of the coordinates fit within (the square implied by) another vector.
136
+ #
137
+ # == Example
138
+ #
139
+ # my_image = Vector2d.new("320x200") # Creates a new vector object
140
+ # my_image.constrain_one(100, 100) # Returns a new vector: x=160, y=100
141
+ def constrain_one( *vector_or_number )
142
+ scale = Vector2d::new(vector_or_number) / self
143
+ if (scale.x > 0 && scale.y > 0)
144
+ scale = (scale.x<scale.y) ? scale.y : scale.x
145
+ self * scale
146
+ else
147
+ constrain_both(args)
148
+ end
149
+ end
150
+
151
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'vector2d'
8
+
9
+ class Test::Unit::TestCase
10
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class Vector2dTest < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
data/vector2d.gemspec ADDED
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{vector2d}
5
+ s.version = "0.5.2"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Inge J\303\270rgensen"]
9
+ s.date = %q{2009-05-20}
10
+ s.email = %q{inge@elektronaut.no}
11
+ s.extra_rdoc_files = [
12
+ "LICENSE",
13
+ "README.rdoc"
14
+ ]
15
+ s.files = [
16
+ ".document",
17
+ ".gitignore",
18
+ "LICENSE",
19
+ "README.rdoc",
20
+ "Rakefile",
21
+ "VERSION",
22
+ "lib/vector2d.rb",
23
+ "test/test_helper.rb",
24
+ "test/vector2d_test.rb",
25
+ "vector2d.gemspec"
26
+ ]
27
+ s.has_rdoc = true
28
+ s.homepage = %q{http://github.com/elektronaut/vector2d}
29
+ s.rdoc_options = ["--charset=UTF-8"]
30
+ s.require_paths = ["lib"]
31
+ s.rubyforge_project = %q{vector2d}
32
+ s.rubygems_version = %q{1.3.1}
33
+ s.summary = %q{Vector2d allows for easy handling of two-dimensionals coordinates and vectors}
34
+ s.test_files = [
35
+ "test/test_helper.rb",
36
+ "test/vector2d_test.rb"
37
+ ]
38
+
39
+ if s.respond_to? :specification_version then
40
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
41
+ s.specification_version = 2
42
+
43
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
44
+ else
45
+ end
46
+ else
47
+ end
48
+ end
metadata CHANGED
@@ -1,46 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: vector2d
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.0.5
7
- date: 2006-12-10 00:00:00 +01:00
8
- summary: A simplistic class for handling two-dimensional vectors.
9
- require_paths:
10
- - lib
11
- email: inge@elektronaut.no
12
- homepage: http://rubyforge.org/projects/vector2d/
13
- rubyforge_project: vector2d
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: false
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.5.2
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - "Inge J\xC3\xB8rgensen"
31
- files:
32
- - lib/vector2d.rb
33
- test_files: []
34
-
35
- rdoc_options: []
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
36
11
 
37
- extra_rdoc_files: []
12
+ date: 2009-05-20 00:00:00 +02:00
13
+ default_executable:
14
+ dependencies: []
38
15
 
16
+ description:
17
+ email: inge@elektronaut.no
39
18
  executables: []
40
19
 
41
20
  extensions: []
42
21
 
22
+ extra_rdoc_files:
23
+ - LICENSE
24
+ - README.rdoc
25
+ files:
26
+ - .document
27
+ - .gitignore
28
+ - LICENSE
29
+ - README.rdoc
30
+ - Rakefile
31
+ - VERSION
32
+ - lib/vector2d.rb
33
+ - test/test_helper.rb
34
+ - test/vector2d_test.rb
35
+ - vector2d.gemspec
36
+ has_rdoc: true
37
+ homepage: http://github.com/elektronaut/vector2d
38
+ post_install_message:
39
+ rdoc_options:
40
+ - --charset=UTF-8
41
+ require_paths:
42
+ - lib
43
+ required_ruby_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ required_rubygems_version: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
43
55
  requirements: []
44
56
 
45
- dependencies: []
46
-
57
+ rubyforge_project: vector2d
58
+ rubygems_version: 1.3.1
59
+ signing_key:
60
+ specification_version: 2
61
+ summary: Vector2d allows for easy handling of two-dimensionals coordinates and vectors
62
+ test_files:
63
+ - test/test_helper.rb
64
+ - test/vector2d_test.rb