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