Class: Meta::JsonSchema::ObjectSchemaBuilder
- Inherits:
-
Object
- Object
- Meta::JsonSchema::ObjectSchemaBuilder
show all
- Extended by:
- Forwardable
- Includes:
- Locked::LockedMethodAlias
- Defined in:
- lib/meta/json_schema/builders/object_schema_builder.rb
Defined Under Namespace
Classes: Locked, WithCommonOptions
Instance Attribute Summary collapse
Instance Method Summary
collapse
#add_scope, #lock, #method_missing
Constructor Details
Returns a new instance of ObjectSchemaBuilder.
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 90
def initialize(options = {}, &)
raise 'type 选项必须是 object' if !options[:type].nil? && options[:type] != 'object'
@schema_cache = {}
@properties = {} @required = []
@validations = {}
options = options.merge(type: 'object')
properties = options.delete(:properties)
@options = options
properties&.each do |name, property_options|
if property_options.is_a?(Hash)
property name, property_options
elsif property_options.is_a?(BaseSchema)
@properties[name.to_sym] = property_options
else
raise ArgumentError, "属性 #{name} 的类型不正确"
end
end
instance_exec(&) if block_given?
end
|
Instance Attribute Details
#properties ⇒ Object
Returns the value of attribute properties.
88
89
90
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 88
def properties
@properties
end
|
Instance Method Details
#locked(options) ⇒ Object
174
175
176
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 174
def locked(options)
Locked.new(self, **options)
end
|
#merge(schema_builder) ⇒ Object
155
156
157
158
159
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 155
def merge(schema_builder)
schema_builder = schema_builder.schema_builder if schema_builder.respond_to?(:schema_builder)
@properties.merge!(schema_builder.properties)
end
|
#params(options = {}, &block) ⇒ Object
147
148
149
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 147
def params(options = {}, &block)
with_common_options(**options, render: false, &block)
end
|
#property(name, options = {}, &block) ⇒ Object
Also known as:
expose, param
125
126
127
128
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 125
def property(name, options = {}, &block)
@properties[name.to_sym] = Properties.build_property(options, ->(options) { SchemaBuilderTool.build(options, &block) })
end
|
#render(options = {}, &block) ⇒ Object
151
152
153
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 151
def render(options = {}, &block)
with_common_options(**options, param: false, &block)
end
|
#schema_name(schema_base_name = nil) ⇒ Object
116
117
118
119
120
121
122
123
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 116
def schema_name(schema_base_name = nil)
if schema_base_name
raise TypeError, "schema_base_name 必须是一个 String,当前是:#{schema_base_name.class}" unless schema_base_name.is_a?(String)
@schema_name = schema_base_name
else
@schema_name
end
end
|
#scope(scope, options = {}) ⇒ Object
143
144
145
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 143
def scope(scope, options = {}, &)
with_common_options(**options, scope: scope, &)
end
|
#to_schema(locked_options = {}) ⇒ Object
166
167
168
169
170
171
172
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 166
def to_schema(locked_options = {})
locked_options = SchemaOptions::UserOptions::Filter.check(locked_options.compact)
return @schema_cache[locked_options] if @schema_cache[locked_options]
properties = @schema_name ? NamedProperties.new(@properties, @schema_name) : Properties.new(@properties)
@schema_cache[locked_options] = ObjectSchema.new(properties: properties, options: @options, locked_options: locked_options)
end
|
#use(proc) ⇒ Object
能且仅能 ObjectSchemaBuilder 内能使用 use 方法
134
135
136
137
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 134
def use(proc)
proc = proc.to_proc if proc.respond_to?(:to_proc)
instance_exec(&proc)
end
|
#with_common_options(common_options, &block) ⇒ Object
139
140
141
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 139
def with_common_options(common_options, &block)
WithCommonOptions.new(self, common_options, &block)
end
|
#within(*properties) ⇒ Object
Also known as:
[]
161
162
163
|
# File 'lib/meta/json_schema/builders/object_schema_builder.rb', line 161
def within(*properties)
to_schema.properties.within(*properties)
end
|