diagnostics_example/
diagnostics_example.rs1use bms_rs::bms::prelude::*;
6
7fn main() {
8 let bms_source = r#"#TITLE Test Song
10#ARTIST Test Composer
11#INVALID_COMMAND this will cause a warning
12#TOTAL 100
13
14#00111:01010101
15#00211:02020202
16"#;
17
18 println!("Parsing BMS file and displaying diagnostic information...\n");
19
20 let output = parse_bms::<KeyLayoutBeat>(bms_source);
22
23 println!(
25 "Parsing successful! Found {} warnings",
26 output.warnings.len()
27 );
28
29 if !output.warnings.is_empty() {
31 println!("\n=== Diagnostic Information ===");
32 emit_bms_warnings("example.bms", bms_source, &output.warnings);
33 }
34
35 println!("\n=== Manual Warning Handling Example ===");
37 let source = SimpleSource::new("example.bms", bms_source);
38 let ariadne_source = ariadne::Source::from(bms_source);
39
40 for warning in &output.warnings {
41 let report = warning.to_report(&source);
42 let _ = report.print(("example.bms".to_string(), ariadne_source.clone()));
43 }
44
45 println!("\nBMS parsing completed!");
46}