Module: RailsMcpServer::Extensions::ResourceTemplating::ClassMethods
- Defined in:
- lib/rails-mcp-server/extensions/resource_templating.rb
Overview
Class methods to be prepended to the singleton class
Instance Attribute Summary collapse
-
#template_params ⇒ Object
readonly
Returns the value of attribute template_params.
Instance Method Summary collapse
- #addressable_template ⇒ Object
- #initialize_from_uri(uri) ⇒ Object
- #instance(uri = self.uri) ⇒ Object
- #match(uri) ⇒ Object
- #metadata ⇒ Object
- #name ⇒ Object
- #non_templated? ⇒ Boolean
- #params ⇒ Object
- #params_from_uri(uri) ⇒ Object
- #template_variables ⇒ Object
- #templated? ⇒ Boolean
- #variabilized_uri(params = {}) ⇒ Object
Instance Attribute Details
#template_params ⇒ Object (readonly)
Returns the value of attribute template_params.
8 9 10 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 8 def template_params @template_params end |
Instance Method Details
#addressable_template ⇒ Object
14 15 16 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 14 def addressable_template @addressable_template ||= Addressable::Template.new(uri) end |
#initialize_from_uri(uri) ⇒ Object
34 35 36 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 34 def initialize_from_uri(uri) new(params_from_uri(uri)) end |
#instance(uri = self.uri) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 42 def instance(uri = self.uri) @instances ||= {} @instances[uri] ||= begin resource_class = Class.new(self) params = params_from_uri(uri) resource_class.instance_variable_set(:@params, params) resource_class.define_singleton_method(:instance) do @instance ||= begin instance = new instance.instance_variable_set(:@params, params) instance end end resource_class.instance end end |
#match(uri) ⇒ Object
30 31 32 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 30 def match(uri) addressable_template.match(uri) end |
#metadata ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 70 def if templated? { uriTemplate: uri, name: resource_name, description: description, mimeType: mime_type }.compact else super end end |
#name ⇒ Object
65 66 67 68 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 65 def name return resource_name if resource_name super end |
#non_templated? ⇒ Boolean
26 27 28 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 26 def non_templated? !templated? end |
#params ⇒ Object
61 62 63 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 61 def params @params || {} end |
#params_from_uri(uri) ⇒ Object
38 39 40 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 38 def params_from_uri(uri) match(uri).mapping.transform_keys(&:to_sym) end |
#template_variables ⇒ Object
18 19 20 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 18 def template_variables addressable_template.variables end |
#templated? ⇒ Boolean
22 23 24 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 22 def templated? template_variables.any? end |
#variabilized_uri(params = {}) ⇒ Object
10 11 12 |
# File 'lib/rails-mcp-server/extensions/resource_templating.rb', line 10 def variabilized_uri(params = {}) addressable_template.(params).pattern end |