#![cfg(feature = "diagnostics")]
use bms_rs::bms::prelude::*;
fn main() {
let bms_source = r"#TITLE Test Song
#ARTIST Test Composer
#INVALID_COMMAND this will cause a warning
#TOTAL 100
#00111:01010101
#00211:02020202
";
println!("Parsing BMS file and displaying diagnostic information...\n");
let output = parse_bms(bms_source, default_config());
println!(
"Parsing successful! Found {} warnings",
output.warnings.len()
);
if !output.warnings.is_empty() {
println!("\n=== Diagnostic Information ===");
emit_bms_warnings("example.bms", bms_source, &output.warnings);
}
println!("\n=== Manual Warning Handling Example ===");
let source = SimpleSource::new("example.bms", bms_source);
let ariadne_source = ariadne::Source::from(bms_source);
for warning in &output.warnings {
let report = warning.to_report(&source);
let _ = report.print(("example.bms".to_string(), ariadne_source.clone()));
}
println!("\nBMS parsing completed!");
}