Module: OllamaAgent::Topology::Extractors::RubySemanticExtractor::ParameterList

Defined in:
lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb

Overview

Builds a flat parameter descriptor list from a Prism parameters node.

Class Method Summary collapse

Class Method Details

.block_part(params_node) ⇒ Object



61
62
63
64
65
66
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 61

def block_part(params_node)
  blk = params_node.block
  return [] unless blk

  [{ kind: "block", name: (blk.name || :block).to_s }]
end

.build(params_node) ⇒ Object



13
14
15
16
17
18
19
20
21
22
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 13

def build(params_node)
  return [] unless params_node.is_a?(Prism::ParametersNode)

  positional(params_node) +
    optional_positionals(params_node) +
    rest_part(params_node) +
    keyword_parts(params_node) +
    kwrest_part(params_node) +
    block_part(params_node)
end

.keyword_entry(param) ⇒ Object



43
44
45
46
47
48
49
50
51
52
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 43

def keyword_entry(param)
  case param
  when Prism::RequiredKeywordParameterNode
    [{ kind: "keyword_required", name: param.name.to_s }]
  when Prism::OptionalKeywordParameterNode
    [{ kind: "keyword_optional", name: param.name.to_s }]
  else
    []
  end
end

.keyword_parts(params_node) ⇒ Object



39
40
41
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 39

def keyword_parts(params_node)
  params_node.keywords.flat_map { |p| keyword_entry(p) }
end

.kwrest_part(params_node) ⇒ Object



54
55
56
57
58
59
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 54

def kwrest_part(params_node)
  kwrest = params_node.keyword_rest
  return [] unless kwrest

  [{ kind: "kwrest", name: (kwrest.name || :kwrest).to_s }]
end

.optional_positionals(params_node) ⇒ Object



28
29
30
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 28

def optional_positionals(params_node)
  params_node.optionals.map { |p| { kind: "optional_positional", name: p.name.to_s } }
end

.positional(params_node) ⇒ Object



24
25
26
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 24

def positional(params_node)
  params_node.requireds.map { |p| { kind: "positional", name: p.name.to_s } }
end

.rest_part(params_node) ⇒ Object



32
33
34
35
36
37
# File 'lib/ollama_agent/topology/extractors/ruby_semantic_extractor/parameter_list.rb', line 32

def rest_part(params_node)
  rest = params_node.rest
  return [] unless rest

  [{ kind: "rest", name: (rest.name || :args).to_s }]
end