class ObfuscatedMorseCode::MorseCodeTranslator

Attributes

letter_separator[R]
word_separator[R]

Public Class Methods

new(letter_separator: '|', word_separator: '/') click to toggle source
# File lib/obfuscated_morse_code/morse_code_translator.rb, line 9
def initialize(letter_separator: '|', word_separator: '/')
  @letter_separator = letter_separator
  @word_separator = word_separator
end

Public Instance Methods

translate(sentences) click to toggle source
# File lib/obfuscated_morse_code/morse_code_translator.rb, line 14
def translate(sentences)
  sentences.map do |sentence|
    letters = sentence.split('')
    translate_letters(letters)
  end
end

Private Instance Methods

translate_letter(letter) click to toggle source
# File lib/obfuscated_morse_code/morse_code_translator.rb, line 35
def translate_letter(letter)
  return '' if letter == ' '
  raise ArgumentError, "cannot translate character #{letter}" unless MORSE_CODE.key?(letter)

  MORSE_CODE[letter]
end
translate_letters(letters) click to toggle source
# File lib/obfuscated_morse_code/morse_code_translator.rb, line 23
def translate_letters(letters)
  translated_letters = ''
  letters.each_with_index do |letter, i|
    next_letter = letters[i + 1]
    translated_letters += translate_letter(letter)
    unless letter == ' '
      translated_letters += word_separator_for(next_letter)
    end
  end
  translated_letters
end
word_separator_for(next_letter) click to toggle source
# File lib/obfuscated_morse_code/morse_code_translator.rb, line 42
def word_separator_for(next_letter)
  return word_separator if next_letter == ' '
  return '' if next_letter.nil?

  letter_separator
end