module MorseWave
Данный модуль, отвечает за запись фразы, в файл в формате .wav
Constants
- CURRENT_PATH
Путь необходимый для создания массива путей к файлам. Возвращает в родительский католог
- ORIGINAL_PATH
Текущий путь к папке с программой
Public Class Methods
text_to_wave(morse)
click to toggle source
# File lib/morsify/morse_wave.rb, line 18 def self.text_to_wave(morse) text = Telegraph.morse_to_text(morse) unless text.nil? # разбиваем слово на буквы, включая пробелы letters = text.downcase.strip.split('') # массив путей к файлам paths = to_paths_array(letters) # проверка существуют ли файлы по заданному пути check_paths(paths) # создаем имя будущего файла file_of_name = generate_file_name # cохраняем файл в формате .wav write_to_wave(file_of_name, paths) end end
Private Class Methods
check_paths(paths)
click to toggle source
метод который проверяет, существуют ли файлы по заданному пути
# File lib/morsify/morse_wave.rb, line 107 def self.check_paths(paths) paths.each do |path| abort "File #{path} does not exist!" unless File.exist?(path) end end
generate_dir(name_of_folder)
click to toggle source
метод который создает папку, если она не была создана после чего переходит в директорию
# File lib/morsify/morse_wave.rb, line 130 def self.generate_dir(name_of_folder) Dir.mkdir(name_of_folder) unless File.exist?(name_of_folder) Dir.chdir(name_of_folder) end
generate_file_name()
click to toggle source
метод который отвечает за создание названия файла
# File lib/morsify/morse_wave.rb, line 119 def self.generate_file_name Time.now.strftime('%H-%M-%S') + '.wav' end
generate_name_folder()
click to toggle source
метод который отвечает за создание имени папки
# File lib/morsify/morse_wave.rb, line 124 def self.generate_name_folder Time.now.strftime('%d-%m-%Y') end
replace_chars(letters)
click to toggle source
метод который заменяет: (,.?!) на их названия
# File lib/morsify/morse_wave.rb, line 65 def self.replace_chars(letters) replacements = { ',' => 'comma', '.' => 'dot', '!' => 'exclamation', '?' => 'question' } letters.map do |letter| if replacements.key?(letter) replacements[letter] else letter end end end
replace_white_space(letters)
click to toggle source
метод который заменяет пробелы на 'pause'
# File lib/morsify/morse_wave.rb, line 60 def self.replace_white_space(letters) letters.map { |letter| letter == ' ' ? 'pause' : letter } end
to_paths_array(letters)
click to toggle source
метод который возвращает массив путей к файлам
# File lib/morsify/morse_wave.rb, line 42 def self.to_paths_array(letters) # массив путей к файлам paths = [] # массив букв где пробел заменен на 'pause' chars = replace_white_space(letters) # массив символов где (,.?!) заменены на их названия chars = replace_chars(chars) # создаем массив путей к файлам chars.each { |char| paths << CURRENT_PATH + '/src/sound/' + char + '.wav' } # возвращаем массив путей к файлам paths end
view_save_path()
click to toggle source
метод который показывает куда был сохранен файл
# File lib/morsify/morse_wave.rb, line 114 def self.view_save_path Dir.pwd end
write_to_wave(file_of_name, paths)
click to toggle source
метод который сохраняет звуки азбуки морзе в один файл
# File lib/morsify/morse_wave.rb, line 83 def self.write_to_wave(file_of_name, paths) # создаем папку records, если она не была создана # после чего переходим в директорию records generate_dir('records') # имя подпапки в формате: ('%d-%m-%Y') name_of_folder = generate_name_folder # создаем подпапку, если она не была создана # после чего переходим в директорию generate_dir(name_of_folder) Writer.new(file_of_name, Format.new(:mono, :pcm_16, 44_100)) do |writer| paths.each do |file_name| Reader.new(file_name).each_buffer do |buffer| writer.write(buffer) end end end # возвращаем путь куда был сохранен файл "Generate wave file: #{view_save_path}/#{file_of_name}" end