//! How many caption lines does `build_caption_text` actually recover? use std::collections::BTreeMap; use sylpheed_formats::{movie_subtitle, PakArchive}; fn main() { let disc = std::env::var("SYLPHEED_DISC").expect("set SYLPHEED_DISC"); let pak = PakArchive::open(format!("{disc}/dat/GP_MAIN_GAME_E.pak")).expect("pak"); let all = movie_subtitle::build_caption_text(&pak); let demo = movie_subtitle::build_demo_text(&pak); let mut per: BTreeMap<&str, (usize, usize)> = BTreeMap::new(); for (id, lines) in &all { let fam = id.split('_').next().unwrap(); let e = per.entry(fam).or_default(); e.0 += 1; e.1 += lines.len(); } println!("{:<8} {:>8} {:>9}", "family", "ids", "lines"); let (mut ids, mut lines) = (0, 0); for (fam, (i, l)) in &per { println!("{fam:<8} {i:>8} {l:>9}"); ids += i; lines += l; } println!("{:<8} {:>8} {:>9}", "TOTAL", ids, lines); println!( "\nbuild_demo_text alone: {} ids, {} lines", demo.len(), demo.values().map(|v| v.len()).sum::() ); // The DEMO family must come out identical either way — that is the control. let demo_via_all: usize = all .iter() .filter(|(k, _)| k.starts_with("DEMO_")) .map(|(_, v)| v.len()) .sum(); println!("DEMO via build_caption_text: {demo_via_all} lines"); }