class Morse::Tree
Attributes
root[R]
Public Class Methods
new()
click to toggle source
# File lib/morse/tree.rb, line 7 def initialize @root = Node.new(nil, ' ') end
Public Instance Methods
humanize(morse_string)
click to toggle source
# File lib/morse/tree.rb, line 17 def humanize(morse_string) out = get_recursively(morse_string, @root) out end
learn(morse_table = {})
click to toggle source
# File lib/morse/tree.rb, line 11 def learn(morse_table = {}) morse_table.each do |letter,morse| @root = push_recursively(@root, letter, morse, 0) end end
Private Instance Methods
get_recursively(morse_string = '', node = nil, letters = [], index = 0)
click to toggle source
# File lib/morse/tree.rb, line 35 def get_recursively(morse_string = '', node = nil, letters = [], index = 0) # "... --- ... ... --- ..." node = @root if node.nil? char = morse_string[index] letters.push(node.value) if char == ' ' if index < morse_string.length node = node.send("#{mra[char]}") get_recursively(morse_string, node, letters, index+1) else letters.push(node.value) letters.join() end rescue => e p(e) letters.join() end
mra()
click to toggle source
# File lib/morse/tree.rb, line 55 def mra MORSE_RUBY_ADAPTER end
push_recursively(node, letter, morse, index)
click to toggle source
# File lib/morse/tree.rb, line 24 def push_recursively(node, letter, morse, index) morse_char = morse[index] node = Node.new(@root) if node.nil? if index < morse.length node.send("#{mra[morse_char]}=", push_recursively(node.send("#{mra[morse_char]}"), letter, morse, index+1)) else node.value = letter end node end