class Guzzler::Vehicle
Public Class Methods
new(vehicle_code)
click to toggle source
# File lib/guzzler.rb, line 6 def initialize(vehicle_code) raise ArgumentError.new("Vehicle code is not a valid vehicle") unless vehicle_code_valid?(vehicle_code) @vehicle_code = vehicle_code end
Public Instance Methods
fuel_eco(**args)
click to toggle source
# File lib/guzzler.rb, line 11 def fuel_eco(**args) valid_arg_options_values = { driving_type: ['city', 'highway', 'combo'], unit: ['mpg', 'kpg'], round: [true, false] } args.each do |key, value| # confirms arg options are valid, and values for options are valid unless valid_arg_options_values.keys.include?(key) && valid_arg_options_values[key].include?(value) if !valid_arg_options_values.keys.include?(key) raise ArgumentError.new("#{key} is not a valid argument option, please select from these: #{valid_arg_options_values.keys.join(', ')}.") else valid_value_class = valid_arg_options_values[key].map(&:class).uniq raise ArgumentError.new("#{value} is not a valid value for #{key}. Please select from #{valid_arg_options_values[key].join(', ')} (#{valid_value_class.join(',')}).") end end end driving_type = args[:driving_type] ||= 'combo' unit = args[:unit] ||= 'mpg' round = args[:round] == nil ? true : args[:round] fuel_economy = get_fuel_economy(driving_type).to_f if unit.downcase == 'kpg' fuel_economy = convert_mpg_to_kpg(fuel_economy) end round ? fuel_economy.round(1).to_s : fuel_economy.to_s end
Private Instance Methods
convert_mpg_to_kpg(mpg)
click to toggle source
# File lib/guzzler.rb, line 51 def convert_mpg_to_kpg(mpg) mpg * 1.609 end
get_fuel_economy(driving_type)
click to toggle source
# File lib/guzzler.rb, line 47 def get_fuel_economy(driving_type) FuelEcoAPI.fetch_fuel_economy(@vehicle_code , driving_type) end
vehicle_code_valid?(vehicle_code)
click to toggle source
# File lib/guzzler.rb, line 43 def vehicle_code_valid?(vehicle_code) FuelEcoAPI.verify_vehicle_code(vehicle_code) end