Class: LanguageOperator::Dsl::ParameterDefinition

Inherits:
Object
  • Object
show all
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.

Examples:

Define a required string parameter

parameter :name do
  type :string
  required true
  description "User's name"
end

Parameter with enum

parameter :status do
  type :string
  enum ["active", "inactive", "pending"]
  default "pending"
end

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nameObject (readonly)

Returns the value of attribute name.



24
25
26
# File 'lib/language_operator/dsl/parameter_definition.rb', line 24

def name
  @name
end

#validatorObject (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_formatObject



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_formatObject



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)

Returns:

  • (Boolean)


44
45
46
# File 'lib/language_operator/dsl/parameter_definition.rb', line 44

def required?
  @required
end

#to_schemaObject



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_formatObject

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