numeric_hash 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  class NumericHash < Hash
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/numeric_hash.rb CHANGED
@@ -75,11 +75,15 @@ class NumericHash < ::Hash
75
75
  # @hash.normalize(120) # => { :a => 12.0, :b => 24.0, :c => 36.0, :d => 48.0 }
76
76
  #
77
77
  def normalize(magnitude = 1.0)
78
- norm_factor = magnitude / total.to_f
79
- norm_factor = 0.0 unless norm_factor.finite? # If total was zero, the normalization factor will not be finite; set it to zero in this case.
78
+ norm_factor = normalization_factor(magnitude)
80
79
  map_values { |value| value * norm_factor }
81
80
  end
82
81
 
82
+ def normalize!(magnitude = 1.0)
83
+ norm_factor = normalization_factor(magnitude)
84
+ map_values! { |value| value * norm_factor }
85
+ end
86
+
83
87
  # Shortcuts to normalize the hash to various totals.
84
88
  #
85
89
  def to_ratio
@@ -407,6 +411,15 @@ protected
407
411
  self
408
412
  end
409
413
 
414
+ # Helper method for calculating the normalization factor that needs to be
415
+ # applied to each value for a given magnitude.
416
+ #
417
+ def normalization_factor(magnitude)
418
+ norm_factor = magnitude / total.to_f
419
+ norm_factor = 0.0 unless norm_factor.finite? # If total was zero, the normalization factor will not be finite; set it to zero in this case.
420
+ norm_factor
421
+ end
422
+
410
423
  class << self
411
424
 
412
425
  # Sums an array of NumericHashes, taking into account empty arrays.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numeric_hash
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
8
+ - 5
9
9
  - 0
10
- version: 0.4.0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Clyde Law
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-22 00:00:00 -08:00
18
+ date: 2012-03-05 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency