Class: Riffer::Tools::Param
- Inherits:
-
Object
- Object
- Riffer::Tools::Param
- Defined in:
- lib/riffer/tools/param.rb
Overview
Riffer::Tools::Param represents a single parameter definition for a tool.
Handles type validation and JSON Schema generation for individual parameters.
Constant Summary collapse
- TYPE_MAPPINGS =
Maps Ruby types to JSON Schema type strings
{ String => "string", Integer => "integer", Float => "number", TrueClass => "boolean", FalseClass => "boolean", Array => "array", Hash => "object" }.freeze
Instance Attribute Summary collapse
-
#default ⇒ Object
readonly
: untyped.
-
#description ⇒ Object
readonly
: String?.
-
#enum ⇒ Object
readonly
: Array?.
-
#name ⇒ Object
readonly
: Hash[Class, String].
-
#required ⇒ Object
readonly
: bool.
-
#type ⇒ Object
readonly
: Class.
Instance Method Summary collapse
-
#initialize(name:, type:, required:, description: nil, enum: nil, default: nil) ⇒ Param
constructor
: (name: Symbol, type: Class, required: bool, ?description: String?, ?enum: Array?, ?default: untyped) -> void.
-
#to_json_schema ⇒ Object
Converts this parameter to JSON Schema format.
-
#type_name ⇒ Object
Returns the JSON Schema type name for this parameter.
-
#valid_type?(value) ⇒ Boolean
Validates that a value matches the expected type.
Constructor Details
#initialize(name:, type:, required:, description: nil, enum: nil, default: nil) ⇒ Param
: (name: Symbol, type: Class, required: bool, ?description: String?, ?enum: Array?, ?default: untyped) -> void
27 28 29 30 31 32 33 34 |
# File 'lib/riffer/tools/param.rb', line 27 def initialize(name:, type:, required:, description: nil, enum: nil, default: nil) @name = name.to_sym @type = type @required = required @description = description @enum = enum @default = default end |
Instance Attribute Details
#default ⇒ Object (readonly)
: untyped
24 25 26 |
# File 'lib/riffer/tools/param.rb', line 24 def default @default end |
#description ⇒ Object (readonly)
: String?
22 23 24 |
# File 'lib/riffer/tools/param.rb', line 22 def description @description end |
#enum ⇒ Object (readonly)
: Array?
23 24 25 |
# File 'lib/riffer/tools/param.rb', line 23 def enum @enum end |
#name ⇒ Object (readonly)
: Hash[Class, String]
19 20 21 |
# File 'lib/riffer/tools/param.rb', line 19 def name @name end |
#required ⇒ Object (readonly)
: bool
21 22 23 |
# File 'lib/riffer/tools/param.rb', line 21 def required @required end |
#type ⇒ Object (readonly)
: Class
20 21 22 |
# File 'lib/riffer/tools/param.rb', line 20 def type @type end |
Instance Method Details
#to_json_schema ⇒ Object
Converts this parameter to JSON Schema format.
: () -> Hash[Symbol, untyped]
59 60 61 62 63 64 |
# File 'lib/riffer/tools/param.rb', line 59 def to_json_schema schema = {type: type_name} schema[:description] = description if description schema[:enum] = enum if enum schema end |
#type_name ⇒ Object
Returns the JSON Schema type name for this parameter.
: () -> String
52 53 54 |
# File 'lib/riffer/tools/param.rb', line 52 def type_name TYPE_MAPPINGS[type] || type.to_s.downcase end |
#valid_type?(value) ⇒ Boolean
Validates that a value matches the expected type.
: (untyped) -> bool
39 40 41 42 43 44 45 46 47 |
# File 'lib/riffer/tools/param.rb', line 39 def valid_type?(value) return true if value.nil? && !required if type == TrueClass || type == FalseClass value == true || value == false else value.is_a?(type) end end |