Class: Swagger::Blocks::Nodes::SchemaNode

Inherits:
Node
  • Object
show all
Defined in:
lib/api_schema/patches/schema_node.rb

Instance Method Summary collapse

Instance Method Details

#array_schema(serializer) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/api_schema/patches/schema_node.rb', line 33

def array_schema(serializer)
  requires serializer.required_fields
  serializer.fields.each do |f|
    property f.name do
      key :type, f.type
      key :format, f.format if f.format
      key :description, f.description
     key :enum, f.allowed_values unless f.allowed_values.empty?
    end
  end
  serializer.references.each do |r|
    property_schema_for(r)
  end
end

#property_schema_for(serializer) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/api_schema/patches/schema_node.rb', line 48

def property_schema_for(serializer)
  property serializer.name do
    key :type, serializer.type
    key :description, serializer.description
    requires serializer.required_fields
    serializer.fields.each do |f|
      property f.name do
        key :type, f.type
        key :format, f.format if f.format
        key :description, f.description
        key :enum, f.allowed_values unless f.allowed_values.empty?
      end
    end
    serializer.references.each do |r|
      property_schema_for(r)
    end
  end
end

#requires(fields) ⇒ Object



5
6
7
# File 'lib/api_schema/patches/schema_node.rb', line 5

def requires(fields)
  key :required, fields
end

#schema_for(serializer) ⇒ Object



9
10
11
12
# File 'lib/api_schema/patches/schema_node.rb', line 9

def schema_for(serializer)
  key :title, serializer.id.to_s.humanize
  serializer.type == :array ? array_schema(serializer) : single_schema(serializer)
end

#single_schema(serializer) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/api_schema/patches/schema_node.rb', line 14

def single_schema(serializer)
  key :required, serializer.name
  property serializer.name do
    key :type, :object
    requires serializer.required_fields
    serializer.fields.each do |f|
      property f.name do
        key :type, f.type
        key :format, f.format if f.format
        key :description, f.description
        key :enum, f.allowed_values unless f.allowed_values.empty?
      end
    end
    serializer.references.each do |r|
      property_schema_for(r) #schema_for from PropertyNode class
    end
  end
end