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