class Contracts::KeywordArgsErrorFormatter
Public Instance Methods
message()
click to toggle source
# File lib/contracts/error_formatter.rb, line 59 def message s = [] s << header.to_s s << " Expected: #{expected}" s << " Actual: #{data[:arg].inspect}" s << " Missing Contract: #{missing_contract_info}" unless missing_contract_info.empty? s << " Invalid Args: #{invalid_args_info}" unless invalid_args_info.empty? s << " Missing Args: #{missing_args_info}" unless missing_args_info.empty? s << " Value guarded in: #{data[:class]}::#{method_name}" s << " With Contract: #{data[:contracts]}" s << " At: #{position} " s.join("\n") end
Private Instance Methods
arg()
click to toggle source
# File lib/contracts/error_formatter.rb, line 117 def arg data[:arg] end
check_contract(contract, value)
click to toggle source
# File lib/contracts/error_formatter.rb, line 106 def check_contract(contract, value) return contract.valid?(value) if contract.respond_to?(:valid?) value.is_a?(contract) rescue false end
contract_options()
click to toggle source
# File lib/contracts/error_formatter.rb, line 113 def contract_options @contract_options ||= data[:contract].send(:options) end
invalid_args_info()
click to toggle source
# File lib/contracts/error_formatter.rb, line 92 def invalid_args_info @invalid_args_info ||= begin invalid_keys = [] arg.each do |key, value| contract = contract_options[key] next unless contract invalid_keys.push(key) unless check_contract(contract, value) end invalid_keys.map do |key| {key => arg[key], :contract => contract_options[key] } end end end
missing_args_info()
click to toggle source
# File lib/contracts/error_formatter.rb, line 76 def missing_args_info @missing_args_info ||= begin missing_keys = contract_options.keys - arg.keys contract_options.select do |key, _| missing_keys.include?(key) end end end
missing_contract_info()
click to toggle source
# File lib/contracts/error_formatter.rb, line 85 def missing_contract_info @missing_contract_info ||= begin contract_keys = contract_options.keys arg.select { |key, _| !contract_keys.include?(key) } end end