spruz 0.1.0 → 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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,6 +5,7 @@ module Spruz
5
5
  if klass.instance_method(:round)
6
6
  klass.class_eval do
7
7
  begin
8
+ alias_method :__old_round__, :round
8
9
  remove_method :round
9
10
  rescue NameError
10
11
  end
@@ -15,9 +16,13 @@ module Spruz
15
16
  end
16
17
  end
17
18
 
18
- def round(places = 0)
19
- unless Integer === places
20
- raise TypeError, "argument places has to be an Integer"
19
+ def round(places = nil)
20
+ if places == nil || places == 0
21
+ return __old_round__
22
+ elsif places.respond_to?(:to_int)
23
+ places = places.to_int
24
+ else
25
+ raise TypeError, "argument places has to be like an Integer"
21
26
  end
22
27
  if places < 0
23
28
  max_places = -Math.log(self.abs + 1) / Math.log(10)
@@ -26,13 +31,19 @@ module Spruz
26
31
  t = self
27
32
  f = 10.0 ** places
28
33
  t *= f
29
- if t >= 0.0
30
- t = (t + 0.5).floor
31
- elsif t < 0.0
32
- t = (t - 0.5).ceil
34
+ if t.infinite?
35
+ result = self
36
+ else
37
+ if t >= 0.0
38
+ t = (t + 0.5).floor
39
+ elsif t < 0.0
40
+ t = (t - 0.5).ceil
41
+ end
42
+ t /= f
43
+ result = t.nan? ? self : t
33
44
  end
34
- t /= f
35
- t.nan? ? self : t
45
+ max_places and result = result.to_i # if places < 0
46
+ result
36
47
  end
37
48
  end
38
49
  end
@@ -1,6 +1,6 @@
1
1
  module Spruz
2
2
  # Spruz version
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -131,21 +131,25 @@ module Spruz
131
131
  assert_equal(1, 1.round)
132
132
  assert_equal(-1, -1.round)
133
133
  assert_equal(2, 1.5.round)
134
+ assert_kind_of Integer, 1.5.round
134
135
  assert_equal(-1, -1.4.round)
135
136
  assert_equal(-2, -1.5.round)
136
137
  end
137
138
 
138
139
  def test_inclusion
139
140
  assert_equal(10, 12.round(-1))
141
+ assert_kind_of Integer, 12.round(-1)
140
142
  assert_equal(-10, -12.round(-1))
141
143
  assert_raises(ArgumentError) { 12.round(-2) }
142
144
  assert_raises(ArgumentError) { -12.round(-2) }
143
- assert_equal(1.6, 1.55.round(1))
145
+ assert_in_delta(1.6, 1.55.round(1), 1E-1)
146
+ assert_kind_of Float, 1.55.round(1)
144
147
  assert_equal(2, 1.55.round(0))
145
- assert_equal(-1.5, -1.45.round(1))
148
+ assert_in_delta(-1.5, -1.45.round(1), 1E-1)
146
149
  assert_equal(-1, -1.45.round(0))
147
- assert_equal(-1.6, -1.55.round(1))
150
+ assert_in_delta(-1.6, -1.55.round(1), 1E-1)
148
151
  assert_equal(-2, -1.55.round(0))
152
+ assert_in_delta(-1.55, -1.55.round(999), 1E-2)
149
153
  end
150
154
  end
151
155
 
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spruz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Florian Frank
@@ -9,7 +14,7 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-15 00:00:00 +01:00
17
+ date: 2010-05-18 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies: []
15
20
 
@@ -80,18 +85,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
85
  requirements:
81
86
  - - ">="
82
87
  - !ruby/object:Gem::Version
88
+ segments:
89
+ - 0
83
90
  version: "0"
84
- version:
85
91
  required_rubygems_version: !ruby/object:Gem::Requirement
86
92
  requirements:
87
93
  - - ">="
88
94
  - !ruby/object:Gem::Version
95
+ segments:
96
+ - 0
89
97
  version: "0"
90
- version:
91
98
  requirements: []
92
99
 
93
100
  rubyforge_project:
94
- rubygems_version: 1.3.5
101
+ rubygems_version: 1.3.6
95
102
  signing_key:
96
103
  specification_version: 3
97
104
  summary: Useful stuff.