From 921b51a405558b49dda2193011234165d9863dec Mon Sep 17 00:00:00 2001 From: Henry Schimke Date: Mon, 6 Mar 2023 12:23:53 -0600 Subject: [PATCH] enable all eci charactersets This is not enabled for the eci encoder set builder, in which the encoding crate results in some encoders being equivelent and thus resulting in odd test cases. --- src/common/character_set.rs | 30 ++++++------ src/common/eci.rs | 20 ++++---- src/common/eci_encoder_set.rs | 87 ++++++++++++++++++++++------------- 3 files changed, 81 insertions(+), 56 deletions(-) diff --git a/src/common/character_set.rs b/src/common/character_set.rs index b514224..0a47d26 100644 --- a/src/common/character_set.rs +++ b/src/common/character_set.rs @@ -34,14 +34,14 @@ pub enum CharacterSet { ISO8859_3, //(5, "ISO-8859-3"), ISO8859_4, //(6, "ISO-8859-4"), ISO8859_5, //(7, "ISO-8859-5"), - // ISO8859_6, //(8, "ISO-8859-6"), + ISO8859_6, //(8, "ISO-8859-6"), ISO8859_7, //(9, "ISO-8859-7"), - // ISO8859_8, //(10, "ISO-8859-8"), + ISO8859_8, //(10, "ISO-8859-8"), ISO8859_9, //(11, "ISO-8859-9"), - // ISO8859_10, //(12, "ISO-8859-10"), - // ISO8859_11, //(13, "ISO-8859-11"), + ISO8859_10, //(12, "ISO-8859-10"), + ISO8859_11, //(13, "ISO-8859-11"), ISO8859_13, //(15, "ISO-8859-13"), - // ISO8859_14, //(16, "ISO-8859-14"), + ISO8859_14, //(16, "ISO-8859-14"), ISO8859_15, //(17, "ISO-8859-15"), ISO8859_16, //(18, "ISO-8859-16"), Shift_JIS, //(20, "Shift_JIS"), @@ -109,14 +109,14 @@ impl CharacterSet { CharacterSet::ISO8859_3 => "ISO-8859-3", CharacterSet::ISO8859_4 => "ISO-8859-4", CharacterSet::ISO8859_5 => "ISO-8859-5", - // CharacterSet::ISO8859_6 => "ISO-8859-6", + CharacterSet::ISO8859_6 => "ISO-8859-6", CharacterSet::ISO8859_7 => "ISO-8859-7", - // CharacterSet::ISO8859_8 => "ISO-8859-8", + CharacterSet::ISO8859_8 => "ISO-8859-8", CharacterSet::ISO8859_9 => "ISO-8859-9", - // CharacterSet::ISO8859_10 => "ISO-8859-10", - // CharacterSet::ISO8859_11 => "ISO-8859-11", + CharacterSet::ISO8859_10 => "ISO-8859-10", + CharacterSet::ISO8859_11 => "ISO-8859-11", CharacterSet::ISO8859_13 => "ISO-8859-13", - // CharacterSet::ISO8859_14 => "ISO-8859-14", + CharacterSet::ISO8859_14 => "ISO-8859-14", CharacterSet::ISO8859_15 => "ISO-8859-15", CharacterSet::ISO8859_16 => "ISO-8859-16", CharacterSet::Shift_JIS => "shift_jis", @@ -148,14 +148,14 @@ impl CharacterSet { CharacterSet::ISO8859_3 => "iso-8859-3", CharacterSet::ISO8859_4 => "iso-8859-4", CharacterSet::ISO8859_5 => "iso-8859-5", - // CharacterSet::ISO8859_6 => "ISO-8859-6", + CharacterSet::ISO8859_6 => "ISO-8859-6", CharacterSet::ISO8859_7 => "iso-8859-7", - // CharacterSet::ISO8859_8 => "ISO-8859-8", + CharacterSet::ISO8859_8 => "ISO-8859-8", CharacterSet::ISO8859_9 => "iso-8859-9", - // CharacterSet::ISO8859_10 => "ISO-8859-10", - // CharacterSet::ISO8859_11 => "ISO-8859-11", + CharacterSet::ISO8859_10 => "ISO-8859-10", + CharacterSet::ISO8859_11 => "ISO-8859-11", CharacterSet::ISO8859_13 => "iso-8859-13", - // CharacterSet::ISO8859_14 => "ISO-8859-14", + CharacterSet::ISO8859_14 => "ISO-8859-14", CharacterSet::ISO8859_15 => "iso-8859-15", CharacterSet::ISO8859_16 => "iso-8859-16", CharacterSet::Shift_JIS => "shift_jis", diff --git a/src/common/eci.rs b/src/common/eci.rs index e33893e..da47109 100644 --- a/src/common/eci.rs +++ b/src/common/eci.rs @@ -123,11 +123,11 @@ impl From for Eci { CharacterSet::UTF32BE => Eci::UTF32BE, CharacterSet::UTF32LE => Eci::UTF32LE, CharacterSet::Binary => Eci::Binary, - // CharacterSet::ISO8859_6 => Eci::ISO8859_6, - // CharacterSet::ISO8859_8 => Eci::ISO8859_8, - // CharacterSet::ISO8859_10 => Eci::ISO8859_10, - // CharacterSet::ISO8859_11 => Eci::ISO8859_11, - // CharacterSet::ISO8859_14 => Eci::ISO8859_14, + CharacterSet::ISO8859_6 => Eci::ISO8859_6, + CharacterSet::ISO8859_8 => Eci::ISO8859_8, + CharacterSet::ISO8859_10 => Eci::ISO8859_10, + CharacterSet::ISO8859_11 => Eci::ISO8859_11, + CharacterSet::ISO8859_14 => Eci::ISO8859_14, _ => Eci::Unknown, } } @@ -142,14 +142,14 @@ impl From for CharacterSet { Eci::ISO8859_3 => CharacterSet::ISO8859_3, Eci::ISO8859_4 => CharacterSet::ISO8859_4, Eci::ISO8859_5 => CharacterSet::ISO8859_5, - // Eci::ISO8859_6 => CharacterSet::ISO8859_6, + Eci::ISO8859_6 => CharacterSet::ISO8859_6, Eci::ISO8859_7 => CharacterSet::ISO8859_7, - // Eci::ISO8859_8 => CharacterSet::ISO8859_8, + Eci::ISO8859_8 => CharacterSet::ISO8859_8, Eci::ISO8859_9 => CharacterSet::ISO8859_9, - // Eci::ISO8859_10 => CharacterSet::ISO8859_10, - // Eci::ISO8859_11 => CharacterSet::ISO8859_11, + Eci::ISO8859_10 => CharacterSet::ISO8859_10, + Eci::ISO8859_11 => CharacterSet::ISO8859_11, Eci::ISO8859_13 => CharacterSet::ISO8859_13, - // Eci::ISO8859_14 => CharacterSet::ISO8859_14, + Eci::ISO8859_14 => CharacterSet::ISO8859_14, Eci::ISO8859_15 => CharacterSet::ISO8859_15, Eci::ISO8859_16 => CharacterSet::ISO8859_16, Eci::Shift_JIS => CharacterSet::Shift_JIS, diff --git a/src/common/eci_encoder_set.rs b/src/common/eci_encoder_set.rs index 2ac723b..e3db100 100644 --- a/src/common/eci_encoder_set.rs +++ b/src/common/eci_encoder_set.rs @@ -20,38 +20,63 @@ use super::{CharacterSet, Eci}; use once_cell::sync::Lazy; -static ENCODERS: Lazy> = Lazy::new(|| { - let mut enc_vec = Vec::new(); - for name in NAMES { - if let Some(enc) = CharacterSet::get_character_set_by_name(name) { - enc_vec.push(enc); - } - } - enc_vec -}); +// static ENCODERS: Lazy> = Lazy::new(|| { +// let mut enc_vec = Vec::new(); +// for name in NAMES { +// if let Some(enc) = CharacterSet::get_character_set_by_name(name) { +// enc_vec.push(enc); +// } +// } +// enc_vec +// }); -const NAMES: [&str; 20] = [ - "IBM437", - "ISO-8859-2", - "ISO-8859-3", - "ISO-8859-4", - "ISO-8859-5", - "ISO-8859-6", - "ISO-8859-7", - "ISO-8859-8", - "ISO-8859-9", - "ISO-8859-10", - "ISO-8859-11", - "ISO-8859-13", - "ISO-8859-14", - "ISO-8859-15", - "ISO-8859-16", - "windows-1250", - "windows-1251", - "windows-1252", - "windows-1256", - "Shift_JIS", -]; +// const NAMES: [&str; 20] = [ +// "IBM437", +// "ISO-8859-2", +// "ISO-8859-3", +// "ISO-8859-4", +// "ISO-8859-5", +// "ISO-8859-6", +// "ISO-8859-7", +// "ISO-8859-8", +// "ISO-8859-9", +// "ISO-8859-10", +// "ISO-8859-11", +// "ISO-8859-13", +// "ISO-8859-14", +// "ISO-8859-15", +// "ISO-8859-16", +// "windows-1250", +// "windows-1251", +// "windows-1252", +// "windows-1256", +// "Shift_JIS", +// ]; + +static ENCODERS: Lazy> = Lazy::new(|| { + vec![ + CharacterSet::Cp437, + CharacterSet::ISO8859_2, + CharacterSet::ISO8859_3, + CharacterSet::ISO8859_4, + CharacterSet::ISO8859_5, + // CharacterSet::ISO8859_6, + CharacterSet::ISO8859_7, + // CharacterSet::ISO8859_8, + CharacterSet::ISO8859_9, + // CharacterSet::ISO8859_10, + // CharacterSet::ISO8859_11, + // CharacterSet::ISO8859_13, + // CharacterSet::ISO8859_14, + CharacterSet::ISO8859_15, + CharacterSet::ISO8859_16, + CharacterSet::Shift_JIS, + CharacterSet::Cp1250, + CharacterSet::Cp1251, + CharacterSet::Cp1252, + CharacterSet::Cp1256, + ] +}); /** * Set of CharsetEncoders for a given input string