Class: RailsMcpCodeSearch::RubyParser

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_mcp_code_search/ruby_parser.rb

Defined Under Namespace

Classes: Result, Visitor

Constant Summary collapse

ParseError =
Class.new(StandardError)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse(source, file_path: nil) ⇒ Object



8
9
10
# File 'lib/rails_mcp_code_search/ruby_parser.rb', line 8

def self.parse(source, file_path: nil)
  new.parse(source, file_path:)
end

Instance Method Details

#parse(source, file_path: nil) ⇒ Object



12
13
14
15
16
17
18
19
20
21
# File 'lib/rails_mcp_code_search/ruby_parser.rb', line 12

def parse(source, file_path: nil)
  result = Prism.parse(source)
  raise ParseError, result.errors.map(&:message).join(", ") unless result.success?

  visitor = Visitor.new(source)
  visitor.visit(result.value)
  visitor.chunks
rescue ParseError
  SlidingWindowParser.parse(source, file_path:)
end