Class: Andrey::Analyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/andrey/analyzer.rb

Class Method Summary collapse

Class Method Details

.analyze_file(filename, include_spaces = false) ⇒ Object



3
4
5
# File 'lib/andrey/analyzer.rb', line 3

def self.analyze_file(filename, include_spaces=false)
  analyze_text(IO.read(filename), include_spaces)
end

.analyze_text(text, include_spaces = false) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/andrey/analyzer.rb', line 7

def self.analyze_text(text, include_spaces=false)
  pmap = {}

  text.downcase.chars.each_cons(2) do |from, to|
    pmap[from] ||= Hash.new(0)
    pmap[to] ||= Hash.new(0)
    pmap[from][to] += 1
  end

  regex   = symbols_regex(include_spaces)
  symbols = pmap.keys.sort.select {|s| s.match(regex) }

  map = symbols.inject([]) do |m, symbol|
    occurrences = pmap[symbol]
    sum = occurrences.values.inject(:+) || 0
    m << symbols.map { |s| sum == 0 ? 0 : (occurrences[s] / sum.to_f) }
  end

  [symbols, map]
end

.symbols_regex(include_spaces) ⇒ Object



28
29
30
# File 'lib/andrey/analyzer.rb', line 28

def self.symbols_regex(include_spaces)
  include_spaces ? Regexp.new(/[a-z ]/) : Regexp.new(/[a-z]/)
end