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