module T::Props::WeakConstructor
def initialize(hash={})
def initialize(hash={}) expected_keys = {} hash.each_key {|key| expected_keys[key] = true} decorator = self.class.decorator decorator.props.each do |p, rules| if hash.key?(p) expected_keys.delete(p) val = hash[p] elsif decorator.has_default?(rules) val = decorator.get_default(rules, self.class) else next end decorator.prop_set(self, p, val, rules) end unless expected_keys.empty? raise ArgumentError.new("#{@class}: Unrecognized properties in #with_props: #{expected_keys.keys.join(', ')}") end end