class Basic101::ArgumentChecker
Public Class Methods
new(args, required_types, optional_types)
click to toggle source
# File lib/basic101/argument_checker.rb, line 7 def initialize(args, required_types, optional_types) @args = args @required_types = required_types @optional_types = optional_types end
Public Instance Methods
check()
click to toggle source
# File lib/basic101/argument_checker.rb, line 13 def check check_count check_types end
Private Instance Methods
check_count()
click to toggle source
# File lib/basic101/argument_checker.rb, line 20 def check_count unless count_range.include?(@args.size) message = "Wrong number of arguments "\ "(#{@args.size} instead of #{expected_count})" raise InvalidArgumentError, message end end
check_types()
click to toggle source
# File lib/basic101/argument_checker.rb, line 28 def check_types @args.zip(types[0..@args.size]).each do |arg, type| unless arg.is_a?(type) raise InvalidArgumentError, "Expected #{type.type_name} but got #{arg.type_name}" end end end
count_range()
click to toggle source
# File lib/basic101/argument_checker.rb, line 45 def count_range min_count..max_count end
expected_count()
click to toggle source
# File lib/basic101/argument_checker.rb, line 37 def expected_count if min_count == max_count min_count else count_range end end
max_count()
click to toggle source
# File lib/basic101/argument_checker.rb, line 53 def max_count types.size end
min_count()
click to toggle source
# File lib/basic101/argument_checker.rb, line 49 def min_count @required_types.size end
types()
click to toggle source
# File lib/basic101/argument_checker.rb, line 57 def types @required_types + @optional_types end