class Morsify::Parser

Public Class Methods

handler(options) click to toggle source
# File lib/morsify/cli.rb, line 36
def self.handler(options)
  puts VERSION if options[:version]

  encode = ->(text) { Telegraph.text_to_morse(text) }
  decode = ->(morse) { Telegraph.morse_to_text(morse) }
  to_cyrillic = ->(morse, lang) { Telegraph.morse_to_text(morse, lang) }
  wave = ->(text) { MorseWave.text_to_wave(text) }

  puts encode.call(options[:encode]) if options[:encode]
  puts decode.call(options[:decode]) if options[:decode] && !options[:ru]

  if options[:decode] && options[:ru]
    puts to_cyrillic.call(options[:decode], options[:ru])
  end

  puts wave.call(options[:wave]) if options[:wave]
end
parse(_args) click to toggle source
# File lib/morsify/cli.rb, line 7
def self.parse(_args)
  options = {}

  optparse = OptionParser.new do |opts|
    opts.banner = 'Usage: morsify [options]'

    opts.on('-h', '--help', 'Prints this help') do
      puts opts
      exit
    end

    opts.on('-e TEXT', '--encode TEXT', 'Text to Morse') { |o| options[:encode] = o }
    opts.on('-d MORSE_CODE', '--decode MORSE_CODE', 'Morse to Text') { |o| options[:decode] = o }
    opts.on('-c', '--cyrillic') { |o| options[:ru] = o }
    opts.on('-w MORSE_CODE', '--wave MORSE_CODE', 'Morse to WAV File') { |o| options[:wave] = o }
    opts.on('-v', '--version') { |o| options[:version] = o }
  end

  begin
    optparse.parse!
  rescue OptionParser::InvalidOption, OptionParser::MissingArgument
    puts 'Нераспознанный параметр!'
    puts 'По команде «morsify -h» можно получить дополнительную информацию.'
    exit
  end

  options
end