Class: ModelContextProtocol::Server::ResourceTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/model_context_protocol/server/resource_template.rb

Defined Under Namespace

Classes: CompletionDSL, DefinitionDSL

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.completionsObject (readonly)

Returns the value of attribute completions.



4
5
6
# File 'lib/model_context_protocol/server/resource_template.rb', line 4

def completions
  @completions
end

.descriptionObject (readonly)

Returns the value of attribute description.



4
5
6
# File 'lib/model_context_protocol/server/resource_template.rb', line 4

def description
  @description
end

.mime_typeObject (readonly)

Returns the value of attribute mime_type.



4
5
6
# File 'lib/model_context_protocol/server/resource_template.rb', line 4

def mime_type
  @mime_type
end

.nameObject (readonly)

Returns the value of attribute name.



4
5
6
# File 'lib/model_context_protocol/server/resource_template.rb', line 4

def name
  @name
end

.uri_templateObject (readonly)

Returns the value of attribute uri_template.



4
5
6
# File 'lib/model_context_protocol/server/resource_template.rb', line 4

def uri_template
  @uri_template
end

Class Method Details

.complete_for(param_name, value) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/model_context_protocol/server/resource_template.rb', line 25

def complete_for(param_name, value)
  completion = if @completions && @completions[param_name.to_s]
    @completions[param_name.to_s]
  else
    ModelContextProtocol::Server::NullCompletion
  end

  completion.call(param_name.to_s, value)
end

.define(&block) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/model_context_protocol/server/resource_template.rb', line 6

def define(&block)
  definition_dsl = DefinitionDSL.new
  definition_dsl.instance_eval(&block)

  @name = definition_dsl.name
  @description = definition_dsl.description
  @mime_type = definition_dsl.mime_type
  @uri_template = definition_dsl.uri_template
  @completions = definition_dsl.completions
end

.definitionObject



35
36
37
38
39
40
41
42
43
# File 'lib/model_context_protocol/server/resource_template.rb', line 35

def definition
  {
    name: @name,
    description: @description,
    mimeType: @mime_type,
    uriTemplate: @uri_template,
    completions: @completions&.transform_keys(&:to_s)
  }
end

.inherited(subclass) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/model_context_protocol/server/resource_template.rb', line 17

def inherited(subclass)
  subclass.instance_variable_set(:@name, @name)
  subclass.instance_variable_set(:@description, @description)
  subclass.instance_variable_set(:@mime_type, @mime_type)
  subclass.instance_variable_set(:@uri_template, @uri_template)
  subclass.instance_variable_set(:@completions, @completions&.dup)
end