trick_bag 0.47.0 → 0.48.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d01ca3cfe583081305fb5ab8275177ae10dae944
4
- data.tar.gz: 53a75fcdec73d0ef74ef6c5e95d68a78661da520
3
+ metadata.gz: 5b83787b4b4a7182fb18c9cbcd6eb7d3fcf6a18b
4
+ data.tar.gz: 8b0ff5d556e5d0da614f680672a31553484458b0
5
5
  SHA512:
6
- metadata.gz: 947ec282b463b2a1916ef64735bc585a1d9956c76fceebea3c0c8b0112659499a5374a7ad578837eb5d80a3c4be5f63bdf6d5cf483a189a670e10b18d93417f0
7
- data.tar.gz: 098840c716d1ecab47b56f663640551d412e3dc9c304f7efec8f56c6a4759f33de0f189e8ece115e2b5a98060449d26929548798f193d364e2f7c5bc71889c19
6
+ metadata.gz: 049f3157a32ece02aa9b5d55aecc639de6463d2c1f7738577be6840291232a7efdb391ae49e47ee6a013cf805e41e139cab502abc500912b1a03d9f1a61797f0
7
+ data.tar.gz: 89bbbc2ded12adca468ad8e3298363d62ba29b29bb53f6823ffe409cc28ddfd9fe822aa993bf724d139d943df4db49ac3892feb1f573847d99f12a5646afeef8
data/RELEASE_NOTES.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## v0.48.0
2
+
3
+ * Add TrickBag::Numeric::MultiCounter#total_count and #percent_of_total_hash.
4
+
1
5
  ## v0.47.0
2
6
 
3
7
  * Remove array_as_multiline_string; it's too similar to array.join("\n").
@@ -15,6 +15,12 @@ class MultiCounter
15
15
  @counts = Hash.new(0)
16
16
  end
17
17
 
18
+ def self.from_array(values, name = '')
19
+ m_counter = MultiCounter.new(name)
20
+ values.each { |value| m_counter.increment(value) }
21
+ m_counter
22
+ end
23
+
18
24
  # Adds keys in the passed enumerable to this counter.
19
25
  def add_keys(keys)
20
26
  keys.each { |key| @counts[key] = 0 }
@@ -40,6 +46,20 @@ class MultiCounter
40
46
  keys.include?(key)
41
47
  end
42
48
 
49
+ # Returns the total of all counts.
50
+ def total_count
51
+ @counts.values.inject(0, &:+)
52
+ end
53
+
54
+ # Returns a hash whose keys are the multicounter's keys and whose values
55
+ # are the percent of total of the values corresponding to those keys.
56
+ def percent_of_total_hash
57
+ total = total_count
58
+ keys.each_with_object({}) do |key, ptotal_hash|
59
+ ptotal_hash[key] = Float(self[key]) / total
60
+ end
61
+ end
62
+
43
63
  # Creates a hash whose keys are this counter's keys, and whose values are
44
64
  # their corresponding values.
45
65
  def to_hash
@@ -1,3 +1,3 @@
1
1
  module TrickBag
2
- VERSION = "0.47.0"
2
+ VERSION = "0.48.0"
3
3
  end
@@ -8,6 +8,8 @@ module Numeric
8
8
 
9
9
  subject { MultiCounter.new }
10
10
 
11
+ let(:sample_data) { %w(Open New Open Closed Open New Closed Open Open Open) }
12
+
11
13
  it "should instantiate" do
12
14
  expect(-> { subject }).not_to raise_error
13
15
  end
@@ -23,6 +25,24 @@ module Numeric
23
25
  expect(subject.keys.sort).to eq(keys.sort)
24
26
  end
25
27
 
28
+ specify 'total_count is correct' do
29
+ sample_data.each { |datum| subject.increment(datum) }
30
+ expect(subject.total_count).to eq(10)
31
+ end
32
+
33
+ specify 'creating from an array works correctly' do
34
+ m_counter = MultiCounter.from_array(sample_data)
35
+ expect(m_counter.total_count).to eq(10)
36
+ expect(m_counter['Open']).to eq(6)
37
+ end
38
+
39
+ specify 'percent_of_total_hash is correctly calculated' do
40
+ ptotal_hash = MultiCounter.from_array(sample_data).percent_of_total_hash
41
+ expect(ptotal_hash['Open']).to eq(0.6)
42
+ expect(ptotal_hash['Closed']).to eq(0.2)
43
+ expect(ptotal_hash['New']).to eq(0.2)
44
+ end
26
45
  end
27
46
  end
28
47
  end
48
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trick_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.47.0
4
+ version: 0.48.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Bennett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-10 00:00:00.000000000 Z
11
+ date: 2014-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os