Sha256: 6f0afe9351a748d304d8c35aaa62e31b011ba60332fd2530731d3d04cec5a50f

Contents?: true

Size: 1.23 KB

Versions: 13

Compression:

Stored size: 1.23 KB

Contents

#encoding: UTF-8
module Termit
  class UserInputParser
    include CanOutput

    delegate :display_error_info_and_quit, :display_help_and_quit, :display_version_and_quit, to: :output_manager

    def initialize user_input
      @user_input = user_input
      quit_if_required
      validate_user_input
    rescue ArgumentError
      display_error_info_and_quit
    end

    def options
      parse_input
    end

    private

    def parse_input
      {
       talk: extract_flag('t'),
       source_lang: @user_input.shift.to_sym,
       target_lang: @user_input.shift.to_sym,
       text: @user_input.join(' ').gsub('.', ',')
      }
    end

    def extract_flag(symbol)
      flag_index = @user_input.index("-#{symbol}")
      flag_index ? !!@user_input.delete_at(flag_index) : false
    end

    def validate_user_input
      raise ArgumentError unless @user_input.is_a? Array
      raise ArgumentError unless @user_input.length > 1
      @user_input.first(2).each do |language_code|
        raise ArgumentError unless (2..7).cover? language_code.length
      end
    end

    def quit_if_required
      display_help_and_quit if @user_input.index("-h") || @user_input.empty?
      display_version_and_quit if @user_input.index("-v")
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
termit-3.9.0 lib/termit/user_input_parser.rb
termit-3.8.0 lib/termit/user_input_parser.rb
termit-3.7.0 lib/termit/user_input_parser.rb
termit-3.6.0 lib/termit/user_input_parser.rb
termit-3.5.0 lib/termit/user_input_parser.rb
termit-3.4.0 lib/termit/user_input_parser.rb
termit-3.2.0 lib/termit/user_input_parser.rb
termit-3.1.2 lib/termit/user_input_parser.rb
termit-3.1.1 lib/termit/user_input_parser.rb
termit-3.1.0 lib/termit/user_input_parser.rb
termit-3.0.2 lib/termit/user_input_parser.rb
termit-3.0.1 lib/termit/user_input_parser.rb
termit-3.0.0 lib/termit/user_input_parser.rb