probe_code/language/
block_handling.rs1#[cfg(test)]
3pub fn merge_code_blocks(
4 code_blocks: Vec<crate::models::CodeBlock>,
5) -> Vec<crate::models::CodeBlock> {
6 let mut merged_blocks: Vec<crate::models::CodeBlock> = Vec::new();
7 let debug_mode = std::env::var("DEBUG").unwrap_or_default() == "1";
8
9 for block in code_blocks {
10 if let Some(last) = merged_blocks.last_mut() {
11 let threshold = 10;
13
14 if block.start_row <= last.end_row + threshold {
15 if debug_mode {
16 println!(
17 "DEBUG: Merging blocks: {} ({}-{}) with {} ({}-{})",
18 last.node_type,
19 last.start_row + 1,
20 last.end_row + 1,
21 block.node_type,
22 block.start_row + 1,
23 block.end_row + 1
24 );
25 }
26 last.end_row = last.end_row.max(block.end_row);
27 last.end_byte = last.end_byte.max(block.end_byte);
28 last.start_row = last.start_row.min(block.start_row);
29 last.start_byte = last.start_byte.min(block.start_byte);
30 continue;
31 }
32 }
33 merged_blocks.push(block);
34 }
35
36 if debug_mode {
37 println!(
38 "DEBUG: After merging: {len} blocks",
39 len = merged_blocks.len()
40 );
41 for (i, block) in merged_blocks.iter().enumerate() {
42 println!(
43 "DEBUG: Block {}: type={}, lines={}-{}",
44 i + 1,
45 block.node_type,
46 block.start_row + 1,
47 block.end_row + 1
48 );
49 }
50 }
51 merged_blocks
52}