frequency_analyser 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,7 @@ class FrequencyAnalyser::Aggregator < Struct.new(:counter, :aggregation)
9
9
  end
10
10
 
11
11
  def aggregate(*files)
12
- files = [files].flatten
12
+ files = coerce(files)
13
13
  files.each do |file|
14
14
  file.each_line do |line|
15
15
  aggregation << counter.count(line)
@@ -23,4 +23,8 @@ class FrequencyAnalyser::Aggregator < Struct.new(:counter, :aggregation)
23
23
  FrequencyAnalyser
24
24
  end
25
25
 
26
+ def coerce(files)
27
+ [files].flatten
28
+ end
29
+
26
30
  end
@@ -1,37 +1,35 @@
1
- class FrequencyAnalyser::Modifier
1
+ class FrequencyAnalyser::Modifier < Struct.new(:aggregation)
2
2
 
3
3
  def self.modify(aggregation, mode)
4
- new.modify(aggregation, mode)
4
+ new(aggregation).modify(mode)
5
5
  end
6
6
 
7
- def modify(aggregation, mode)
7
+ def modify(mode)
8
8
  case mode
9
9
  when :probability
10
- probability(aggregation)
10
+ probability
11
11
  when :percentage
12
- percentage(aggregation)
12
+ percentage
13
13
  else
14
14
  aggregation
15
15
  end
16
16
  end
17
17
 
18
18
  private
19
- def probability(aggregation)
20
- sum = sum(aggregation)
19
+ def probability
21
20
  aggregation.inject(aggregation) do |hash, (k, v)|
22
21
  hash.merge!(k => v.to_f / sum)
23
22
  end
24
23
  end
25
24
 
26
- def percentage(aggregation)
27
- sum = sum(aggregation)
25
+ def percentage
28
26
  aggregation.inject(aggregation) do |hash, (k, v)|
29
27
  hash.merge!(k => v.to_f / sum * 100)
30
28
  end
31
29
  end
32
30
 
33
- def sum(aggregation)
34
- aggregation.values.inject(:+)
31
+ def sum
32
+ @sum ||= aggregation.values.inject(:+)
35
33
  end
36
34
 
37
35
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frequency_analyser
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 1
10
- version: 1.2.1
9
+ - 2
10
+ version: 1.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Christopher Patuzzo