frequency_analyser 0.0.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/README.md +23 -0
- data/lib/frequency_analyser/aggregation.rb +13 -0
- data/lib/frequency_analyser/base.rb +14 -0
- data/lib/frequency_analyser/counter.rb +16 -0
- data/lib/frequency_analyser.rb +3 -0
- metadata +83 -0
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
## Frequency Analyser
|
2
|
+
|
3
|
+
Compose a hash containing the frequencies of characters in text.
|
4
|
+
|
5
|
+
## Usage
|
6
|
+
|
7
|
+
```
|
8
|
+
gem install frequency_analyser
|
9
|
+
```
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
require 'frequency_analyser'
|
13
|
+
|
14
|
+
file = File.new('a_tale_of_two_cities.txt')
|
15
|
+
FrequencyAnalyser.analyse(file)
|
16
|
+
#=> {
|
17
|
+
'a'=>47063, 'b'=>8139, 'c'=>13224, 'd'=>27484, 'e'=>72877, 'f'=>13152,
|
18
|
+
'g'=>12121, 'h'=>38358, 'i'=>39784, 'j'=>622, 'k'=>4634, 'l'=>21533,
|
19
|
+
'm'=>14922, 'n'=>41310, 'o'=>45115, 'p'=>9453, 'q'=>655, 'r'=>35956,
|
20
|
+
's'=>36771, 't'=>52393, 'u'=>16216, 'v'=>5065, 'w'=>13835, 'x'=>666,
|
21
|
+
'y'=>11849, 'z'=>213
|
22
|
+
}
|
23
|
+
```
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class FrequencyAnalyser < Struct.new(:counter, :aggregation)
|
2
|
+
|
3
|
+
def self.analyse(file)
|
4
|
+
new(Counter, Aggregation.new).analyse(file)
|
5
|
+
end
|
6
|
+
|
7
|
+
def analyse(file)
|
8
|
+
file.each_line do |line|
|
9
|
+
aggregation << counter.count(line)
|
10
|
+
end
|
11
|
+
aggregation
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class FrequencyAnalyser::Counter
|
2
|
+
|
3
|
+
def self.count(text)
|
4
|
+
new.count(text.dup)
|
5
|
+
end
|
6
|
+
|
7
|
+
def count(text)
|
8
|
+
text.downcase!
|
9
|
+
('a'..'z').inject(Hash.new(0)) do |hash, c|
|
10
|
+
count = text.count(c)
|
11
|
+
hash[c] = count unless count.zero?
|
12
|
+
hash
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: frequency_analyser
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Christopher Patuzzo
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2012-09-15 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Compose a hash containing the frequencies of characters in text
|
35
|
+
email: chris@patuzzo.co.uk
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- README.md
|
44
|
+
- lib/frequency_analyser/aggregation.rb
|
45
|
+
- lib/frequency_analyser/base.rb
|
46
|
+
- lib/frequency_analyser/counter.rb
|
47
|
+
- lib/frequency_analyser.rb
|
48
|
+
homepage: https://github.com/cpatuzzo/frequency_analyser
|
49
|
+
licenses: []
|
50
|
+
|
51
|
+
post_install_message:
|
52
|
+
rdoc_options: []
|
53
|
+
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 3
|
62
|
+
segments:
|
63
|
+
- 0
|
64
|
+
version: "0"
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
hash: 3
|
71
|
+
segments:
|
72
|
+
- 0
|
73
|
+
version: "0"
|
74
|
+
requirements: []
|
75
|
+
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 1.8.24
|
78
|
+
signing_key:
|
79
|
+
specification_version: 3
|
80
|
+
summary: Frequency Analyser
|
81
|
+
test_files: []
|
82
|
+
|
83
|
+
has_rdoc:
|