hexa 0.0.1 → 0.1.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.
@@ -0,0 +1,59 @@
1
+ class Cylinder
2
+
3
+ attr_accessor :radius, :diameter, :height
4
+
5
+ # Create a new Cylinder object
6
+ # @param [Hash] you can pass the :radius, the :diameter and the :height
7
+ # options. You can pass both a Fixnum or a Circle object to both the :radius
8
+ # and the :diameter options. If you pass a Circle object, the method will fetch
9
+ # the radius or diameter attribute
10
+ # @return [Cylinder] a new Cylinder object
11
+ def initialize(options = {})
12
+
13
+ radius = options[:radius] || nil
14
+ diameter = options[:diameter] || nil
15
+ height = options[:height] || nil
16
+
17
+ # Define the cylinder radius
18
+ if radius
19
+ if radius.instance_of?(Circle)
20
+ @radius = radius.send(:radius)
21
+ elsif radius.instance_of?(Fixnum)
22
+ @radius = radius
23
+ else
24
+ @radius = 1
25
+ end
26
+ else
27
+ @radius = 1
28
+ end
29
+
30
+ # Define the cylinder diameter
31
+ if radius
32
+ @diameter = @radius * 2
33
+ else
34
+ if diameter
35
+ if diameter.instance_of?(Circle)
36
+ @diameter = diameter.send(:diameter)
37
+ elsif diameter.instance_of?(Fixnum)
38
+ @diameter = diameter
39
+ else
40
+ @diameter = 2
41
+ end
42
+ else
43
+ @diameter = 2
44
+ end
45
+ end
46
+
47
+ # Define the cylinder height
48
+ @height = height || 1
49
+ end
50
+
51
+
52
+ # Return the volume of the cylinder thanks to the
53
+ # Math::PI * (self.radius ** 2) * self.height
54
+ # @return [Fixnum] cylinder volume
55
+ def volume
56
+ Math::PI * (@radius ** 2) * @height
57
+ end
58
+
59
+ end
@@ -0,0 +1,21 @@
1
+ class Circle
2
+
3
+ attr_accessor :radius, :diameter
4
+
5
+ # Constructor for the Circle object
6
+ # @param [Hash] options you can specify :radius or :diameter
7
+ # @return [Circle] a new Circle object with the specified radius or diameter
8
+ def initialize(options = {})
9
+ if options[:radius]
10
+ @radius = options[:radius]
11
+ @diameter = options[:radius] * 2
12
+ elsif options[:diameter]
13
+ @radius = options[:diameter] / 2
14
+ @diameter = options[:diameter]
15
+ else
16
+ @radius = 1
17
+ @diamter = 2
18
+ end
19
+ end
20
+
21
+ end
@@ -0,0 +1,20 @@
1
+ class Square
2
+
3
+ attr_accessor :side
4
+
5
+ # Constructor for the Square object
6
+ # @param [Hash, Fixnum] you can pass a :side option with a fixnum
7
+ # as the value of the :side key or just pass a Fixnum, if you don't
8
+ # pass anything, the default side length is 1
9
+ # @return [Square] a new Square object
10
+ def initialize(arg = {})
11
+ if arg.instance_of?(Hash) and arg[:side]
12
+ @side = arg[:side]
13
+ elsif arg.instance_of?(Fixnum)
14
+ @side = arg
15
+ else
16
+ @side = 1
17
+ end
18
+ end
19
+
20
+ end
data/lib/hexa/version.rb CHANGED
@@ -1,3 +1,6 @@
1
1
  module Hexa
2
- VERSION = "0.0.1"
2
+ MAJOR = 0
3
+ MINOR = 1
4
+ TINY = 1
5
+ VERSION = [MAJOR, MINOR, TINY].compact.join(".")
3
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hexa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-20 00:00:00.000000000 Z
12
+ date: 2012-08-21 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A personnal library to check my math homeworks
15
15
  email:
@@ -25,6 +25,9 @@ files:
25
25
  - Rakefile
26
26
  - hexa.gemspec
27
27
  - lib/hexa.rb
28
+ - lib/hexa/objects/cylinder.rb
29
+ - lib/hexa/shapes/circle.rb
30
+ - lib/hexa/shapes/square.rb
28
31
  - lib/hexa/version.rb
29
32
  homepage: ''
30
33
  licenses: []