class MorseMeNicely::Encoder

Constants

ENCODING_REFERENCE_PATH

Public Class Methods

new(input_text) click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 7
def initialize(input_text)
  @input_text = input_text
  @encoding_reference = YAML::load_file(ENCODING_REFERENCE_PATH)
end

Public Instance Methods

encoded_input() click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 12
def encoded_input
  validate_input_text
  @input_text.split(/\n/).map do |line|
    line.scan(/\w+\.?\,?/).map do |word|
      translate_word(word)
    end.join(@encoding_reference["separators"]["word"])
  end.join("\n")
end

Private Instance Methods

get_input_invalid_characters() click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 30
def get_input_invalid_characters
  input_copy = @input_text.downcase.dup
  @encoding_reference["characters"].keys.each do |character|
    input_copy.gsub!(character, '')
  end
  input_copy.gsub(/\s+/, '').split('').uniq
end
translate_character(character) click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 44
def translate_character(character)
  @encoding_reference["characters"][character.downcase]
end
translate_word(word) click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 38
def translate_word(word)
  word.split('').map do |character|
    translate_character(character)
  end.join(@encoding_reference["separators"]["character"])
end
validate_input_text() click to toggle source
# File lib/morse_me_nicely/encoder.rb, line 23
def validate_input_text
  invalid_characters = get_input_invalid_characters
  unless invalid_characters.empty?
    raise InvalidInputError, "Input text contains invalid characters: #{invalid_characters.join(" ")}"
  end
end