Class: RailsMcpCodeSearch::SlidingWindowParser
- Inherits:
-
Object
- Object
- RailsMcpCodeSearch::SlidingWindowParser
- Defined in:
- lib/rails_mcp_code_search/sliding_window_parser.rb
Constant Summary collapse
- WINDOW_SIZE =
50- OVERLAP =
10- MAX_CHUNKS =
200- Result =
RubyParser::Result
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/sliding_window_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 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/rails_mcp_code_search/sliding_window_parser.rb', line 13 def parse(source, file_path: nil) lines = source.lines return [] if lines.empty? chunks = [] step = WINDOW_SIZE - OVERLAP offset = 0 while offset < lines.size && chunks.size < MAX_CHUNKS window_end = [ offset + WINDOW_SIZE, lines.size ].min content = lines[offset...window_end].join chunks << Result.new( content:, line_start: offset + 1, line_end: window_end, chunk_type: "window", qualified_name: nil ) offset += step end chunks end |