def _init(hash, path="", rule_table={})
unless hash.is_a?(Hash)
raise Kwalify.schema_error(:schema_notmap, nil, (!path || path.empty? ? "/" : path), nil)
end
rule = self
rule_table[hash.__id__] = rule
curr_path = "#{path}/type"
_init_type_value(hash['type'], rule, curr_path)
hash.each do |key, val|
curr_path = "#{path}/#{key}"
sym = key.intern
method = get_init_method(sym)
unless method
raise schema_error(:key_unknown, rule, curr_path, "#{key}:")
end
if sym == :sequence || sym == :mapping
__send__(method, val, rule, curr_path, rule_table)
else
__send__(method, val, rule, curr_path)
end
end
_check_confliction(hash, rule, path)
return self
end