class TdTip::Cli

Command line interface

Attributes

cli_options[R]
parameters[R]
response[R]

Public Instance Methods

calculate() click to toggle source

Main/default action

# File lib/td_tip/cli.rb, line 15
def calculate
  set_cli_options
  set_parameters

  if parameters.valid?
    set_response
    display_response
  else
    display_validation_errors parameters
  end
end

Private Instance Methods

display_response() click to toggle source

Print response on screen

# File lib/td_tip/cli.rb, line 47
def display_response
  if response.valid?
    say "# Total amount with tip: #{response.amount_with_tip}" \
        " #{response.currency}\n"
    say "# Tip amount: #{response.tip} #{response.currency}\n"
  else
    display_validation_errors response
  end
end
display_validation_errors(obj) click to toggle source

Print validation messages

# File lib/td_tip/cli.rb, line 58
def display_validation_errors(obj)
  obj.errors.messages.each do |field, messages|
    say "# #{field.capitalize}: #{messages.join ', '}\n"
  end
end
set_cli_options() click to toggle source

Set options from command line or ask user

# File lib/td_tip/cli.rb, line 30
def set_cli_options
  @cli_options = options.dup
  @cli_options[:amount] ||= ask('# Please provide amount:')
  @cli_options[:tip] ||= ask('# Please provide tip (%):')
end
set_parameters() click to toggle source

Set parameters from options

# File lib/td_tip/cli.rb, line 37
def set_parameters
  @parameters = TdTip::Models::Parameters.new cli_options
end
set_response() click to toggle source

Set response using parameters

# File lib/td_tip/cli.rb, line 42
def set_response
  @response = TdTip::Models::Response.new(parameters).get
end