Module: GrapeOAS::SchemaConstraints
- Defined in:
- lib/grape_oas/schema_constraints.rb
Overview
Applies numeric and string constraints from documentation to a schema.
Accepts both symbol-keyed and string-keyed doc hashes; keys are normalized internally so callers need not pre-convert them.
Class Method Summary collapse
Class Method Details
.apply(schema, doc) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/grape_oas/schema_constraints.rb', line 9 def self.apply(schema, doc) doc = doc.transform_keys(&:to_sym) unless doc.empty? if doc.key?(:minimum) schema.minimum = doc[:minimum] if schema.respond_to?(:minimum=) # Clear stale exclusive_minimum; re-set below if also provided schema.exclusive_minimum = nil if schema.respond_to?(:exclusive_minimum=) && !doc.key?(:exclusive_minimum) end if doc.key?(:maximum) schema.maximum = doc[:maximum] if schema.respond_to?(:maximum=) # Clear stale exclusive_maximum; re-set below if also provided schema.exclusive_maximum = nil if schema.respond_to?(:exclusive_maximum=) && !doc.key?(:exclusive_maximum) end set_if_present(schema, :exclusive_minimum=, doc, :exclusive_minimum) set_if_present(schema, :exclusive_maximum=, doc, :exclusive_maximum) set_if_present(schema, :min_length=, doc, :min_length) set_if_present(schema, :max_length=, doc, :max_length) set_if_present(schema, :pattern=, doc, :pattern) end |