Class: KennySpeak::Kenny

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

Overview

To Follow

Class Method Summary collapse

Class Method Details

.from_kenny(str) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/kenny_speak.rb', line 26

def self.from_kenny(str)
    result = ''

    str.gsub(/\s+/m, ' ').strip.split(' ').each do |word|
        word.scan(/.{1,3}/).each do |tuple|
            result << letter_from_kenny(tuple)
        end
        result << ' '
    end
    result.rstrip
end

.kenny_from_letter(letter) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/kenny_speak.rb', line 38

def self.kenny_from_letter(letter)
    upper = false

    upper = true if letter =~ /[[:upper:]]/

    tmp = letter.downcase

    offset = tmp.ord - 97

    tuple = KENNY_LETTERS[offset]

    return tuple.capitalize if upper

    tuple
end

.letter_from_kenny(tuple) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/kenny_speak.rb', line 54

def self.letter_from_kenny(tuple)
    return tuple if tuple.length != 3                # Not a tuple
    return tuple if tuple[/[a-zA-Z0-9]+/] != tuple   # Not just letters

    upper = false

    upper = true if tuple.chr =~ /[[:upper:]]/

    tmp = tuple.downcase

    offset = KENNY_LETTERS.index(tmp)

    return tuple if offset.nil?

    letter = (offset.to_i + 97).chr

    return letter.upcase if upper

    letter
end

.to_kenny(str) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/kenny_speak.rb', line 13

def self.to_kenny(str)
    result = ''

    str.split('').each do |c|
        result << if c =~ /[[:alpha:]]/
                      kenny_from_letter(c)
                  else
                      c
                  end
    end
    result
end