From a6665edbf0bbf24f20da96cf435153846d7a8488 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 1 Aug 2023 22:21:13 -0700 Subject: [PATCH] converters maps work --- rust/build.rs | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/rust/build.rs b/rust/build.rs index 5b6c2dfea5..a12d862e48 100644 --- a/rust/build.rs +++ b/rust/build.rs @@ -94,30 +94,39 @@ fn write_output( ) -> Result<(), IoError> { let mut file = File::create(file_name)?; - write!(file, "{}", "\ + write!( + file, + "{}", + "\ use lazy_static::lazy_static; use std::collections::HashMap; lazy_static! { static ref CODEPAGE_NUMBER_TO_NAME: HashMap = { let mut map = HashMap::new(); -")?; +" + )?; for (&cpnumber, value) in codepages.iter() { let source = value.keys().max().unwrap(); let name = value[source][0]; writeln!(file, " map.insert({cpnumber}, \"{name}\");")?; } - write!(file, "{}", "\ - map + write!( + file, + "{}", + " map }; -} -")?; - let mut names: BTreeMap<&str, BTreeMap>> = BTreeMap::new(); + static ref CODEPAGE_NAME_TO_NUMBER: HashMap<&'static str, u32> = { + let mut map = HashMap::new(); +" + )?; + + let mut names: BTreeMap>> = BTreeMap::new(); for (&cpnumber, value) in codepages.iter() { for (&source, value2) in value.iter() { - for &name in value2.iter() { + for name in value2.iter().map(|name| name.to_ascii_lowercase()) { names .entry(name) .or_insert_with(BTreeMap::new) @@ -128,12 +137,19 @@ lazy_static! { } } - for (&name, value) in names.iter() { - for (_source, numbers) in value.iter().rev() { - println!(" {{ {}, \"{name}\" }},", numbers[0]); - break; + for (name, value) in names.iter() { + for (_source, numbers) in value.iter().rev().take(1) { + writeln!(file, " map.insert(\"{name}\", {});", numbers[0])?; } } + write!( + file, + "{}", + " map + }; +} +" + )?; Ok(()) } -- 2.30.2