use bstr::ByteSlice; use std::{collections::HashMap, path::PathBuf}; use parse_mediawiki_sql::{ field_types::ContentModel, iterate_sql_insertions, schemas::Page, utils::memory_map, }; fn main() -> anyhow::Result<()> { let mut args = std::env::args_os().skip(1); let sql = unsafe { memory_map( &args .next() .map(PathBuf::from) .unwrap_or_else(|| "page.sql".into()), )? }; let mut iterator = iterate_sql_insertions::(&sql); let counts: HashMap, usize> = iterator.fold(HashMap::new(), |mut counts, Page { content_model, .. }| { let entry = counts.entry(content_model).or_insert(0); *entry += 1; counts }); println!("{:?}", counts); assert_eq!( iterator .finish() .map(|(input, _)| input.chars().take(4).collect::()), Ok(";\n/*".into()) ); Ok(()) }