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