Class: LanguageOperator::Dsl::ParameterDefinition
- Inherits:
-
Object
- Object
- LanguageOperator::Dsl::ParameterDefinition
- Defined in:
- lib/language_operator/dsl/parameter_definition.rb
Overview
Parameter definition for tool parameters
Defines parameter schema, validation, and metadata for MCP tools. Supports type checking, required validation, enums, defaults, and custom validators.
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#validator ⇒ Object
readonly
Returns the value of attribute validator.
Instance Method Summary collapse
- #default(val = nil) ⇒ Object
- #description(val = nil) ⇒ Object
- #email_format ⇒ Object
- #enum(val = nil) ⇒ Object
-
#initialize(name) ⇒ ParameterDefinition
constructor
A new instance of ParameterDefinition.
- #phone_format ⇒ Object
-
#required(val = true) ⇒ Object
Setter method for required flag.
-
#required? ⇒ Boolean
Getter method for required flag (explicit to avoid collision with setter).
- #to_schema ⇒ Object
- #type(val = nil) ⇒ Object
-
#url_format ⇒ Object
Built-in validators.
-
#validate(proc_or_regex) ⇒ Object
Custom validation with proc or regex.
-
#validate_value(value) ⇒ Object
Validate a value against this parameter's validator.
Constructor Details
#initialize(name) ⇒ ParameterDefinition
Returns a new instance of ParameterDefinition.
26 27 28 29 30 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 26 def initialize(name) @name = name @required = false @validator = nil end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
24 25 26 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 24 def name @name end |
#validator ⇒ Object (readonly)
Returns the value of attribute validator.
24 25 26 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 24 def validator @validator end |
Instance Method Details
#default(val = nil) ⇒ Object
60 61 62 63 64 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 60 def default(val = nil) return @default if val.nil? @default = val end |
#description(val = nil) ⇒ Object
48 49 50 51 52 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 48 def description(val = nil) return @description if val.nil? @description = val end |
#email_format ⇒ Object
76 77 78 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 76 def email_format @validator = /\A[\w+\-.]+@[a-z\d-]+(\.[a-z\d-]+)*\.[a-z]+\z/i end |
#enum(val = nil) ⇒ Object
54 55 56 57 58 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 54 def enum(val = nil) return @enum if val.nil? @enum = val end |
#phone_format ⇒ Object
80 81 82 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 80 def phone_format @validator = /^\+\d{10,15}$/ end |
#required(val = true) ⇒ Object
Setter method for required flag
39 40 41 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 39 def required(val = true) @required = val end |
#required? ⇒ Boolean
Getter method for required flag (explicit to avoid collision with setter)
44 45 46 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 44 def required? @required end |
#to_schema ⇒ Object
100 101 102 103 104 105 106 107 108 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 100 def to_schema schema = { 'type' => map_type(@type), 'description' => @description } schema['enum'] = @enum if @enum schema['default'] = @default if @default schema end |
#type(val = nil) ⇒ Object
32 33 34 35 36 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 32 def type(val = nil) return @type if val.nil? @type = val end |
#url_format ⇒ Object
Built-in validators
72 73 74 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 72 def url_format @validator = %r{^https?://} end |
#validate(proc_or_regex) ⇒ Object
Custom validation with proc or regex
67 68 69 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 67 def validate(proc_or_regex) @validator = proc_or_regex end |
#validate_value(value) ⇒ Object
Validate a value against this parameter's validator
85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/language_operator/dsl/parameter_definition.rb', line 85 def validate_value(value) return nil unless @validator case @validator when Regexp return "Parameter '#{@name}' has invalid format" unless value.to_s =~ @validator when Proc result = @validator.call(value) return result if result.is_a?(String) # Error message return "Parameter '#{@name}' validation failed" unless result end nil # No error end |