class JSchema::Validator::Properties
Private Instance Methods
additional_properties_schema()
click to toggle source
# File lib/jschema/validator/properties.rb, line 98 def additional_properties_schema if @additional_properties.respond_to?(:validate) @additional_properties end end
applicable_type()
click to toggle source
# File lib/jschema/validator/properties.rb, line 56 def applicable_type Hash end
pattern_properties_schema(field)
click to toggle source
# File lib/jschema/validator/properties.rb, line 104 def pattern_properties_schema(field) schemas = [] if @pattern_properties.is_a?(Hash) @pattern_properties.each do |pattern, sch| if field.match(pattern) schemas << Schema.build(sch, parent, "patternProperties/#{field}") end end end schemas end
post_initialize(properties, pattern_properties, additional_properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 38 def post_initialize(properties, pattern_properties, additional_properties) @properties = if properties.is_a?(Hash) properties.each_with_object({}) do |(field, sch), res| res[field] = Schema.build(sch, parent, "properties/#{field}") end end @additional_properties = if additional_properties.is_a?(Hash) Schema.build(additional_properties, parent, 'additionalProperties') else additional_properties end @pattern_properties = pattern_properties end
properties_schema(field)
click to toggle source
# File lib/jschema/validator/properties.rb, line 94 def properties_schema(field) @properties[field] if @properties.is_a?(Hash) end
schemas_for(field)
click to toggle source
# File lib/jschema/validator/properties.rb, line 80 def schemas_for(field) schemas = pattern_properties_schema(field) if (psch = properties_schema(field)) schemas << psch end if schemas.empty? && (asch = additional_properties_schema) schemas << asch end schemas end
valid_properties?(properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 34 def valid_properties?(properties) properties.nil? || properties.is_a?(Hash) end
validate_additional_properties(additional_properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 28 def validate_additional_properties(additional_properties) (valid_properties?(additional_properties) || boolean?(additional_properties)) || invalid_schema('additionalProperties', additional_properties) end
validate_args(properties, pattern_properties, additional_properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 12 def validate_args(properties, pattern_properties, additional_properties) validate_properties(properties) validate_pattern_properties(pattern_properties) validate_additional_properties(additional_properties) end
validate_instance(instance)
click to toggle source
# File lib/jschema/validator/properties.rb, line 60 def validate_instance(instance) instance.each do |field, value| schemas = schemas_for(field) if schemas.empty? && @additional_properties == false return "#{instance} must not have any additional fields" end schemas.each do |schema| validation_errors = schema.validate(value) unless validation_errors.empty? return validation_errors.first end end end nil end
validate_pattern_properties(pattern_properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 23 def validate_pattern_properties(pattern_properties) valid_properties?(pattern_properties) || invalid_schema('patternProperties', pattern_properties) end
validate_properties(properties)
click to toggle source
# File lib/jschema/validator/properties.rb, line 18 def validate_properties(properties) valid_properties?(properties) || invalid_schema('properties', properties) end