Class: MCP::Rails::Parameters::ParamsBuilder

Inherits:
Object
  • Object
show all
Defined in:
app/controllers/concerns/mcp/rails/parameters.rb

Overview

Builder class for parameter definitions

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeParamsBuilder

Returns a new instance of ParamsBuilder.



134
135
136
# File 'app/controllers/concerns/mcp/rails/parameters.rb', line 134

def initialize
  @params = []
end

Instance Attribute Details

#paramsObject (readonly)

Returns the value of attribute params.



132
133
134
# File 'app/controllers/concerns/mcp/rails/parameters.rb', line 132

def params
  @params
end

Instance Method Details

#param(name, type: nil, item_type: nil, example: nil, required: false, &block) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'app/controllers/concerns/mcp/rails/parameters.rb', line 138

def param(name, type: nil, item_type: nil, example: nil, required: false, &block)
  param_def = { name: name, required: required }
  if type == :array
    param_def[:type] = :array
    if block_given?
      nested_builder = ParamsBuilder.new
      nested_builder.instance_eval(&block)
      param_def[:nested] = nested_builder.params
    elsif item_type
      param_def[:item_type] = item_type
    else
      raise ArgumentError, "Must provide item_type or a block for array type"
    end
  elsif block_given?
    param_def[:type] = :object
    nested_builder = ParamsBuilder.new
    nested_builder.instance_eval(&block)
    param_def[:nested] = nested_builder.params
  else
    param_def[:type] = type if type
  end
  param_def[:example] = example if example
  @params << param_def
end