module Telegraph

Public Class Methods

morse_to_text(morse, language = :en) click to toggle source

Morse to Text

В режиме morse_to_text: Между одним символом азбуки морзе, используется один пробел. Между словами отступ равен 7 пробелам. К примеру: “… — … … — …”.

# File lib/morsify/telegraph.rb, line 21
def self.morse_to_text(morse, language = :en)
  unless morse.nil?
    # выбор словаря для расшифровки
    dict = MorseCode.choose_dictionary(language)

    # массив слов
    words = to_words_array(morse)

    # массив, содержащий вложенные массивы
    # в которых слова разбиты на символы азбуки морзе
    letters = words_to_morse_char(words)

    # массив расшифрованных букв
    convert_letters = decode_chars(dict, letters)
    # результат конвертирования
    convert_letters.join('').encode('utf-8')
  end
end
text_to_morse(text) click to toggle source
# File lib/morsify/telegraph.rb, line 6
def self.text_to_morse(text)
  unless text.nil?
    # массив букв включая пробелы
    letters = to_letters_array(text.strip.upcase)
    # результат конвертирования
    convert_letters(letters).join('').strip
  end
end

Private Class Methods

convert_letters(letters) click to toggle source

метод который конвертирует массив букв, в символы азбуки Морзе

# File lib/morsify/telegraph.rb, line 48
def self.convert_letters(letters)
  convert_letters = []

  letters.each do |item|
    letter = item.to_sym

    letter =  if letter == 

    if ENCODE_DICT.key?(letter)
      convert_letters << LETTER_SPACE if letter != LETTER_SPACE
      convert_letters << ENCODE_DICT[letter]
    else
      puts "[WARNING] Module Telegraph can support this #{letter}"
      convert_letters << letter
    end
  end

  convert_letters
end
decode_chars(dict, letters) click to toggle source

метод который возвращает массив расшифрованных букв

# File lib/morsify/telegraph.rb, line 87
def self.decode_chars(dict, letters)
  # массив для хранения расшифрованных букв
  convert_letters = []

  # расшифровка слов
  letters.each do |item|
    item.each do |item|
      convert_letters << dict[item] if dict.key?(item)
    end
    # добавляем пробел после каждого слова
    convert_letters << ' '
  end

  # удаляем последний элемент массива
  convert_letters.delete_at(-1)

  # результат конвертирования
  convert_letters
end
to_letters_array(string) click to toggle source

метод который разбивает строку на буквы, включая пробелы

# File lib/morsify/telegraph.rb, line 43
def self.to_letters_array(string)
  string.split('')
end
to_words_array(morse) click to toggle source

метод который разбивает строку на массив слов

# File lib/morsify/telegraph.rb, line 69
def self.to_words_array(morse)
  morse.split(' ' * 7)
end
words_to_morse_char(words) click to toggle source

метод который разбивает слова, на символы азбуки морзе

# File lib/morsify/telegraph.rb, line 74
def self.words_to_morse_char(words)
  # массив, содержащий вложенные массивы
  # в которых слова разбиты на символы азбуки морзе
  chars = []

  # разбиваем слова на символы азбуки морзе
  words.each { |item| chars << item.split(' ') }

  # возвращаем массив, содержащий вложенные массивы
  chars
end