Class: SimpleJsonSchemaBuilder::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/simple_json_schema_builder/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(description: nil, default_required: false) ⇒ Base

Returns a new instance of Base.



20
21
22
23
24
25
# File 'lib/simple_json_schema_builder/base.rb', line 20

def initialize(description: nil, default_required: false)
  @properties = {}
  @required_key_names = []
  @description = description
  @default_required = default_required
end

Class Method Details

.object(description: nil, default_required: false, &block) ⇒ Object



7
8
9
10
# File 'lib/simple_json_schema_builder/base.rb', line 7

def self.object(description: nil, default_required: false, &block)
  @schema ||= Base.new(description: description, default_required: default_required)
  @schema.instance_eval(&block)
end

.schemaObject



12
13
14
# File 'lib/simple_json_schema_builder/base.rb', line 12

def self.schema
  @schema.schema
end

.to_jsonObject



16
17
18
# File 'lib/simple_json_schema_builder/base.rb', line 16

def self.to_json
  MultiJson.dump(schema)
end

Instance Method Details

#boolean(key_name, required: nil, title: nil, description: nil, array: false, examples: []) ⇒ Object



45
46
47
48
49
# File 'lib/simple_json_schema_builder/base.rb', line 45

def boolean(key_name, required: nil, title: nil, description: nil, array: false, examples: [])
  add_required(key_name, required)
  add_property("boolean", key_name, title: title, description: description, examples: examples, enum: nil)
  add_array(key_name, array)
end

#integer(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil) ⇒ Object



33
34
35
36
37
# File 'lib/simple_json_schema_builder/base.rb', line 33

def integer(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil)
  add_required(key_name, required)
  add_property("integer", key_name, title: title, description: description, examples: examples, enum: enum)
  add_array(key_name, array)
end

#number(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil) ⇒ Object



39
40
41
42
43
# File 'lib/simple_json_schema_builder/base.rb', line 39

def number(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil)
  add_required(key_name, required)
  add_property("number", key_name, title: title, description: description, examples: examples, enum: enum)
  add_array(key_name, array)
end

#object(key_name = nil, required: nil, default_required: false, description: nil, array: false, schema: nil, &block) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/simple_json_schema_builder/base.rb', line 51

def object(key_name = nil, required: nil, default_required: false, description: nil, array: false, schema: nil, &block)
  @default_required = default_required
  add_required(key_name, required)

  if schema
    nested_object = schema
  else
    nested_object = Base.new(description: description)
    nested_object.instance_eval(&block)
  end

  if key_name
    @properties[key_name] = nested_object.schema
    add_array(key_name, array)
  else
    @properties = nested_object.schema
  end
end

#schemaObject



70
71
72
73
74
75
76
77
# File 'lib/simple_json_schema_builder/base.rb', line 70

def schema
  {
    type: "object",
    description: description,
    required: (required_key_names unless required_key_names.empty?),
    properties: properties,
  }.compact
end

#string(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil) ⇒ Object



27
28
29
30
31
# File 'lib/simple_json_schema_builder/base.rb', line 27

def string(key_name, required: nil, title: nil, description: nil, array: false, examples: [], enum: nil)
  add_required(key_name, required)
  add_property("string", key_name, title: title, description: description, examples: examples, enum: enum)
  add_array(key_name, array)
end