Class: RailsMcpCodeSearch::ErbParser

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

Defined Under Namespace

Classes: Visitor

Constant Summary collapse

Result =
RubyParser::Result
MIN_LINES =
3
MAX_CHUNKS =
30

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.parse(source, file_path: nil) ⇒ Object



9
10
11
# File 'lib/rails_mcp_code_search/erb_parser.rb', line 9

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

Instance Method Details

#parse(source, file_path: nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/rails_mcp_code_search/erb_parser.rb', line 13

def parse(source, file_path: nil)
  result = Herb.parse(source)
  return SlidingWindowParser.parse(source, file_path:) unless result.success?

  visitor = Visitor.new(source)
  visitor.visit(result.value)
  chunks = deduplicate(visitor.chunks).first(MAX_CHUNKS)

  chunks.empty? ? SlidingWindowParser.parse(source, file_path:) : chunks
rescue => _e
  SlidingWindowParser.parse(source, file_path:)
end