Module: RubyPi::Schema
- Defined in:
- lib/ruby_pi/tools/schema.rb
Class Method Summary collapse
-
.array(description: nil, required: false, items: nil, min_items: nil, max_items: nil, unique_items: nil) ⇒ Hash
Builds a JSON Schema for an array property.
-
.boolean(description = nil, required: false) ⇒ Hash
Builds a JSON Schema for a boolean property.
-
.integer(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) ⇒ Hash
Builds a JSON Schema for an integer property.
-
.number(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) ⇒ Hash
Builds a JSON Schema for a number (float/decimal) property.
-
.object(**properties) ⇒ Hash
Builds a JSON Schema for an object with named properties.
-
.string(description = nil, required: false, enum: nil, format: nil, min_length: nil, max_length: nil, pattern: nil) ⇒ Hash
Builds a JSON Schema for a string property.
Class Method Details
.array(description: nil, required: false, items: nil, min_items: nil, max_items: nil, unique_items: nil) ⇒ Hash
Builds a JSON Schema for an array property.
125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/ruby_pi/tools/schema.rb', line 125 def array(description: nil, required: false, items: nil, min_items: nil, max_items: nil, unique_items: nil) schema = { type: "array" } schema[:description] = description if description # Strip internal _required flag from item schemas if present schema[:items] = sanitize(items) if items schema[:minItems] = min_items if min_items schema[:maxItems] = max_items if max_items schema[:uniqueItems] = unique_items unless unique_items.nil? schema[:_required] = true if required schema end |
.boolean(description = nil, required: false) ⇒ Hash
Builds a JSON Schema for a boolean property.
109 110 111 112 113 114 |
# File 'lib/ruby_pi/tools/schema.rb', line 109 def boolean(description = nil, required: false) schema = { type: "boolean" } schema[:description] = description if description schema[:_required] = true if required schema end |
.integer(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) ⇒ Hash
Builds a JSON Schema for an integer property.
76 77 78 79 80 81 82 83 84 |
# File 'lib/ruby_pi/tools/schema.rb', line 76 def integer(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) schema = { type: "integer" } schema[:description] = description if description schema[:minimum] = minimum if minimum schema[:maximum] = maximum if maximum schema[:enum] = enum if enum schema[:_required] = true if required schema end |
.number(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) ⇒ Hash
Builds a JSON Schema for a number (float/decimal) property.
94 95 96 97 98 99 100 101 102 |
# File 'lib/ruby_pi/tools/schema.rb', line 94 def number(description = nil, required: false, minimum: nil, maximum: nil, enum: nil) schema = { type: "number" } schema[:description] = description if description schema[:minimum] = minimum if minimum schema[:maximum] = maximum if maximum schema[:enum] = enum if enum schema[:_required] = true if required schema end |
.object(**properties) ⇒ Hash
Builds a JSON Schema for an object with named properties.
Each keyword argument key is a property name, and its value is a schema hash produced by one of the other builder methods (‘.string`, `.integer`, etc.). Properties marked with `required: true` are collected into the top-level “required” array.
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/ruby_pi/tools/schema.rb', line 147 def object(**properties) required_fields = [] cleaned_properties = {} properties.each do |name, prop_schema| # Extract and consume the internal _required flag if prop_schema[:_required] required_fields << name.to_s end # Store a sanitized copy (without _required) under the property name cleaned_properties[name] = sanitize(prop_schema) end schema = { type: "object", properties: cleaned_properties } schema[:required] = required_fields unless required_fields.empty? schema end |
.string(description = nil, required: false, enum: nil, format: nil, min_length: nil, max_length: nil, pattern: nil) ⇒ Hash
Builds a JSON Schema for a string property.
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/ruby_pi/tools/schema.rb', line 55 def string(description = nil, required: false, enum: nil, format: nil, min_length: nil, max_length: nil, pattern: nil) schema = { type: "string" } schema[:description] = description if description schema[:enum] = enum if enum schema[:format] = format if format schema[:minLength] = min_length if min_length schema[:maxLength] = max_length if max_length schema[:pattern] = pattern if pattern schema[:_required] = true if required schema end |