use std::fs;
fn main() {
let grl_content = r#"rule "TestRule" {
when
User.Age > 18
then
User.setStatus("adult");
}"#;
println!("Testing GRL content:");
println!("{}", grl_content);
let mut blocks = Vec::new();
let mut current_block = String::new();
let mut brace_count = 0;
let mut in_rule = false;
for line in grl_content.lines() {
let line = line.trim();
println!("Processing line: '{}'", line);
if line.starts_with("rule ") {
println!("Found rule start");
in_rule = true;
current_block.clear();
current_block.push_str(line);
current_block.push('\n');
for ch in line.chars() {
match ch {
'{' => {
brace_count += 1;
println!("Open brace, count: {}", brace_count);
},
'}' => {
brace_count -= 1;
println!("Close brace, count: {}", brace_count);
if brace_count == 0 {
blocks.push(current_block.clone());
current_block.clear();
in_rule = false;
break;
}
}
_ => {}
}
}
continue;
}
if in_rule {
println!("In rule, adding line: '{}'", line);
current_block.push_str(line);
current_block.push('\n');
for ch in line.chars() {
match ch {
'{' => {
brace_count += 1;
println!("Open brace, count: {}", brace_count);
},
'}' => {
brace_count -= 1;
println!("Close brace, count: {}", brace_count);
if brace_count == 0 {
blocks.push(current_block.clone());
current_block.clear();
in_rule = false;
break;
}
}
_ => {}
}
}
}
}
println!("Found {} blocks", blocks.len());
for (i, block) in blocks.iter().enumerate() {
println!("Block {}: '{}'", i, block);
}
}