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