Enum oem_cp::code_table_type::TableType
source · pub enum TableType {
Complete(&'static [char; 128]),
Incomplete(&'static [Option<char>; 128]),
}
Expand description
Wrapper enumerate for decoding tables
It has 2 types: Complete
, complete tables (it doesn’t have undefined codepoints) / Incomplete
, incomplete tables (does have ones)
Variants§
Complete(&'static [char; 128])
complete table, which doen’t have any undefined codepoints
Incomplete(&'static [Option<char>; 128])
incomplete table, which has some undefined codepoints
Implementations§
source§impl TableType
impl TableType
sourcepub fn decode_string_checked<'a, T: Into<Cow<'a, [u8]>>>(
&self,
src: T
) -> Option<String>
pub fn decode_string_checked<'a, T: Into<Cow<'a, [u8]>>>( &self, src: T ) -> Option<String>
Wrapper function for decoding bytes encoded in SBCSs
This function returns None
if any bytes bumps into undefined codepoints
Arguments
src
- bytes encoded in SBCS
Examples
use oem_cp::code_table::{DECODING_TABLE_CP437, DECODING_TABLE_CP874};
use oem_cp::code_table_type::TableType;
use TableType::{Complete,Incomplete};
assert_eq!(Complete(&DECODING_TABLE_CP437).decode_string_checked(vec![0xFB, 0xAC, 0x3D, 0xAB]), Some("√¼=½".to_string()));
// means shrimp in Thai (U+E49 => 0xE9)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_checked(vec![0xA1, 0xD8, 0xE9, 0xA7]), Some("กุ้ง".to_string()));
// 0xDB-0xDE,0xFC-0xFF is invalid in CP874 in Windows (strict mode)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_checked(vec![0x30, 0xDB]), None);
sourcepub fn decode_string_lossy<'a, T: Into<Cow<'a, [u8]>>>(&self, src: T) -> String
pub fn decode_string_lossy<'a, T: Into<Cow<'a, [u8]>>>(&self, src: T) -> String
Wrapper function for decoding bytes encoded in SBCSs
Undefined codepoints are replaced with U+FFFD.
Arguments
src
- bytes encoded in SBCS
Examples
use oem_cp::code_table::{DECODING_TABLE_CP437, DECODING_TABLE_CP874};
use oem_cp::code_table_type::TableType;
use TableType::{Complete,Incomplete};
assert_eq!(Complete(&DECODING_TABLE_CP437).decode_string_lossy(vec![0xFB, 0xAC, 0x3D, 0xAB]), "√¼=½".to_string());
// means shrimp in Thai (U+E49 => 0xE9)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_lossy(vec![0xA1, 0xD8, 0xE9, 0xA7]), "กุ้ง".to_string());
// 0xDB-0xDE,0xFC-0xFF is invalid in CP874 in Windows (strict mode)
assert_eq!(Incomplete(&DECODING_TABLE_CP874).decode_string_lossy(vec![0x30, 0xDB]), "0\u{FFFD}".to_string());