Module: RubynCode::Tools::Schema

Defined in:
lib/rubyn_code/tools/schema.rb

Constant Summary collapse

TYPE_MAP =
{
  string: 'string',
  integer: 'integer',
  number: 'number',
  boolean: 'boolean',
  array: 'array',
  object: 'object'
}.freeze
OPTIONAL_PROP_KEYS =
%i[description default enum].freeze

Class Method Summary collapse

Class Method Details

.build(params_hash) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rubyn_code/tools/schema.rb', line 16

def build(params_hash)
  return { type: 'object', properties: {}, required: [] } if params_hash.empty?

  properties = {}
  required = []

  params_hash.each do |name, spec|
    name_str = name.to_s
    prop = build_property(spec)
    properties[name_str] = prop

    required << name_str if spec[:required]
  end

  schema = {
    type: 'object',
    properties: properties
  }
  schema[:required] = required unless required.empty?
  schema
end