Class: PhoneticEncoder

Inherits:
Object
  • Object
show all
Defined in:
lib/phonetic_encoder.rb,
lib/phonetic_encoder/version.rb,
lib/phonetic_encoder/dicts/nato.rb,
lib/phonetic_encoder/dicts/sounds.rb

Overview

Docs to come

Constant Summary collapse

VERSION =
'1.0.0'.freeze
NATO =
{ 'a' => 'alpha',
'b' => 'bravo',
'c' => 'charlie',
'd' => 'delta',
'e' => 'echo',
'f' => 'foxtrot',
'g' => 'golf',
'h' => 'hotel',
'i' => 'india',
'j' => 'juliett',
'k' => 'kilo',
'l' => 'lima',
'm' => 'mike',
'n' => 'november',
'o' => 'oscar',
'p' => 'papa',
'q' => 'quebec',
'r' => 'romeo',
's' => 'sierra',
't' => 'tango',
'u' => 'uniform',
'v' => 'victor',
'w' => 'whiskey',
'x' => 'x-ray',
'y' => 'yankee',
'z' => 'zulu' }.freeze
SOUNDS =
{ 'a' => 'aye',
'b' => 'bee',
'c' => 'sea',
'd' => 'dee',
'e' => 'ee',
'f' => 'eff',
'g' => 'jee',
'h' => 'aytch',
'i' => 'eye',
'j' => 'jay',
'k' => 'kay',
'l' => 'el',
'm' => 'em',
'n' => 'en',
'o' => 'oh',
'p' => 'pee',
'q' => 'cue',
'r' => 'are',
's' => 'ess',
't' => 'tee',
'u' => 'you',
'v' => 'vee',
'w' => 'doubleyou',
'x' => 'ex',
'y' => 'why',
'z' => 'zed' }.freeze

Instance Method Summary collapse

Constructor Details

#initializePhoneticEncoder

Returns a new instance of PhoneticEncoder.



9
10
11
12
13
14
# File 'lib/phonetic_encoder.rb', line 9

def initialize
    @dict = {}

    @dict['nato'] = NATO
    @dict['sounds'] = SOUNDS
end

Instance Method Details

#custom(name, dict) ⇒ Object



16
17
18
# File 'lib/phonetic_encoder.rb', line 16

def custom(name, dict)
    @dict[name] = dict
end

#encode(text, dict_name = 'nato') ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/phonetic_encoder.rb', line 24

def encode(text, dict_name = 'nato')
    dict_name = 'nato' if dict_name.empty?

    return text unless @dict.key?(dict_name)

    result = ''

    text.downcase.split('').each do |letter|
        result << format('%<word>s ', word: letter_from_dictionary(letter, @dict[dict_name]))
    end
    result.rstrip
end

#letter_from_dictionary(letter, dict) ⇒ Object



20
21
22
# File 'lib/phonetic_encoder.rb', line 20

def letter_from_dictionary(letter, dict)
    dict.key?(letter) ? dict[letter].downcase : letter
end