class PBRT::Signature

Constants

TYPES

Public Class Methods

new(names_and_types) click to toggle source
# File lib/pbrt/signature.rb, line 9
def initialize(names_and_types)
  @names_and_types = names_and_types

  check_for_known_types
end

Public Instance Methods

check(params) click to toggle source
# File lib/pbrt/signature.rb, line 15
def check(params)
  check_for_surplus(params)
end

Private Instance Methods

check_for_known_types() click to toggle source
# File lib/pbrt/signature.rb, line 21
def check_for_known_types
  unknown = @names_and_types.values - TYPES

  if unknown.any?
    raise ArgumentError, "unknown types: #{unknown.join(", ")}"
  end
end
check_for_surplus(params) click to toggle source
# File lib/pbrt/signature.rb, line 29
def check_for_surplus(params)
  surplus = params.keys - @names_and_types.keys

  if surplus.size == 1
    raise ArgumentError, "(unknown keyword: #{surplus.first})"
  elsif surplus.size > 1
    raise ArgumentError, "(unknown keywords: #{surplus.join(", ")})"
  end
end