diff --git a/pkstrings/src/lib.rs b/pkstrings/src/lib.rs
index 6465a1f..63e67a3 100644
--- a/pkstrings/src/lib.rs
+++ b/pkstrings/src/lib.rs
@@ -13,36 +13,99 @@
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see .
+use lazy_static::lazy_static;
+use std::collections::HashMap;
+use std::convert::TryFrom;
use std::fmt;
use std::ops::Deref;
-use std::convert::TryFrom;
-use std::collections::HashMap;
-use lazy_static::lazy_static;
lazy_static! {
static ref STRTOHEX: HashMap = {
let tmp = [
- ('A', 0x80), ('B', 0x81), ('C', 0x82), ('D', 0x83),
- ('E', 0x84), ('F', 0x85), ('G', 0x86), ('H', 0x87),
- ('I', 0x88), ('J', 0x89), ('K', 0x8a), ('L', 0x8b),
- ('M', 0x8c), ('N', 0x8d), ('O', 0x8e), ('P', 0x8f),
- ('Q', 0x90), ('R', 0x91), ('S', 0x92), ('T', 0x93),
- ('U', 0x94), ('V', 0x95), ('W', 0x96), ('X', 0x97),
- ('Y', 0x98), ('Z', 0x99), ('(', 0x9a), (')', 0x9b),
- (':', 0x9c), (';', 0x9d), ('[', 0x9e), (']', 0x9f),
- ('a', 0xa0), ('b', 0xa1), ('c', 0xa2), ('d', 0xa3),
- ('e', 0xa4), ('f', 0xa5), ('g', 0xa6), ('h', 0xa7),
- ('i', 0xa8), ('j', 0xa9), ('k', 0xaa), ('l', 0xab),
- ('m', 0xac), ('n', 0xad), ('o', 0xae), ('p', 0xaf),
- ('q', 0xb0), ('r', 0xb1), ('s', 0xb2), ('t', 0xb3),
- ('u', 0xb4), ('v', 0xb5), ('w', 0xb6), ('x', 0xb7),
- ('y', 0xb8), ('z', 0xb9), ('\'', 0xe0), ('-', 0xe3),
- ('?', 0xe6), ('!', 0xe7), ('.', 0xe8), ('▷', 0xec),
- ('▶', 0xed), ('▼', 0xee), ('♂', 0xef), ('×', 0xf1),
- ('.', 0xf2), ('/', 0xf3), (',', 0xf4), ('♀', 0xf5),
- ('0', 0xf6), ('1', 0xf7), ('2', 0xf8), ('3', 0xf9),
- ('4', 0xfa), ('5', 0xfb), ('6', 0xfc), ('7', 0xfd),
- ('8', 0xfe), ('9', 0xff), (' ', 0x7f), ('@', 0x50),
+ ('A', 0x80),
+ ('B', 0x81),
+ ('C', 0x82),
+ ('D', 0x83),
+ ('E', 0x84),
+ ('F', 0x85),
+ ('G', 0x86),
+ ('H', 0x87),
+ ('I', 0x88),
+ ('J', 0x89),
+ ('K', 0x8a),
+ ('L', 0x8b),
+ ('M', 0x8c),
+ ('N', 0x8d),
+ ('O', 0x8e),
+ ('P', 0x8f),
+ ('Q', 0x90),
+ ('R', 0x91),
+ ('S', 0x92),
+ ('T', 0x93),
+ ('U', 0x94),
+ ('V', 0x95),
+ ('W', 0x96),
+ ('X', 0x97),
+ ('Y', 0x98),
+ ('Z', 0x99),
+ ('(', 0x9a),
+ (')', 0x9b),
+ (':', 0x9c),
+ (';', 0x9d),
+ ('[', 0x9e),
+ (']', 0x9f),
+ ('a', 0xa0),
+ ('b', 0xa1),
+ ('c', 0xa2),
+ ('d', 0xa3),
+ ('e', 0xa4),
+ ('f', 0xa5),
+ ('g', 0xa6),
+ ('h', 0xa7),
+ ('i', 0xa8),
+ ('j', 0xa9),
+ ('k', 0xaa),
+ ('l', 0xab),
+ ('m', 0xac),
+ ('n', 0xad),
+ ('o', 0xae),
+ ('p', 0xaf),
+ ('q', 0xb0),
+ ('r', 0xb1),
+ ('s', 0xb2),
+ ('t', 0xb3),
+ ('u', 0xb4),
+ ('v', 0xb5),
+ ('w', 0xb6),
+ ('x', 0xb7),
+ ('y', 0xb8),
+ ('z', 0xb9),
+ ('\'', 0xe0),
+ ('-', 0xe3),
+ ('?', 0xe6),
+ ('!', 0xe7),
+ ('.', 0xe8),
+ ('▷', 0xec),
+ ('▶', 0xed),
+ ('▼', 0xee),
+ ('♂', 0xef),
+ ('×', 0xf1),
+ ('.', 0xf2),
+ ('/', 0xf3),
+ (',', 0xf4),
+ ('♀', 0xf5),
+ ('0', 0xf6),
+ ('1', 0xf7),
+ ('2', 0xf8),
+ ('3', 0xf9),
+ ('4', 0xfa),
+ ('5', 0xfb),
+ ('6', 0xfc),
+ ('7', 0xfd),
+ ('8', 0xfe),
+ ('9', 0xff),
+ (' ', 0x7f),
+ ('@', 0x50),
];
let mut map = HashMap::new();
@@ -51,30 +114,92 @@ lazy_static! {
}
map
};
-
static ref HEXTOSTR: HashMap = {
let tmp = [
- (0x80, 'A'), (0x81, 'B'), (0x82, 'C'), (0x83, 'D'),
- (0x84, 'E'), (0x85, 'F'), (0x86, 'G'), (0x87, 'H'),
- (0x88, 'I'), (0x89, 'J'), (0x8a, 'K'), (0x8b, 'L'),
- (0x8c, 'M'), (0x8d, 'N'), (0x8e, 'O'), (0x8f, 'P'),
- (0x90, 'Q'), (0x91, 'R'), (0x92, 'S'), (0x93, 'T'),
- (0x94, 'U'), (0x95, 'V'), (0x96, 'W'), (0x97, 'X'),
- (0x98, 'Y'), (0x99, 'Z'), (0x9a, '('), (0x9b, ')'),
- (0x9c, ':'), (0x9d, ';'), (0x9e, '['), (0x9f, ']'),
- (0xa0, 'a'), (0xa1, 'b'), (0xa2, 'c'), (0xa3, 'd'),
- (0xa4, 'e'), (0xa5, 'f'), (0xa6, 'g'), (0xa7, 'h'),
- (0xa8, 'i'), (0xa9, 'j'), (0xaa, 'k'), (0xab, 'l'),
- (0xac, 'm'), (0xad, 'n'), (0xae, 'o'), (0xaf, 'p'),
- (0xb0, 'q'), (0xb1, 'r'), (0xb2, 's'), (0xb3, 't'),
- (0xb4, 'u'), (0xb5, 'v'), (0xb6, 'w'), (0xb7, 'x'),
- (0xb8, 'y'), (0xb9, 'z'), (0xe0, '\''), (0xe3, '-'),
- (0xe6, '?'), (0xe7, '!'), (0xe8, '.'), (0xec, '▷'),
- (0xed, '▶'), (0xee, '▼'), (0xef, '♂'), (0xf1, '×'),
- (0xf2, '.'), (0xf3, '/'), (0xf4, ','), (0xf5, '♀'),
- (0xf6, '0'), (0xf7, '1'), (0xf8, '2'), (0xf9, '3'),
- (0xfa, '4'), (0xfb, '5'), (0xfc, '6'), (0xfd, '7'),
- (0xfe, '8'), (0xff, '9'), (0x7f, ' '), (0x50, '@'),
+ (0x80, 'A'),
+ (0x81, 'B'),
+ (0x82, 'C'),
+ (0x83, 'D'),
+ (0x84, 'E'),
+ (0x85, 'F'),
+ (0x86, 'G'),
+ (0x87, 'H'),
+ (0x88, 'I'),
+ (0x89, 'J'),
+ (0x8a, 'K'),
+ (0x8b, 'L'),
+ (0x8c, 'M'),
+ (0x8d, 'N'),
+ (0x8e, 'O'),
+ (0x8f, 'P'),
+ (0x90, 'Q'),
+ (0x91, 'R'),
+ (0x92, 'S'),
+ (0x93, 'T'),
+ (0x94, 'U'),
+ (0x95, 'V'),
+ (0x96, 'W'),
+ (0x97, 'X'),
+ (0x98, 'Y'),
+ (0x99, 'Z'),
+ (0x9a, '('),
+ (0x9b, ')'),
+ (0x9c, ':'),
+ (0x9d, ';'),
+ (0x9e, '['),
+ (0x9f, ']'),
+ (0xa0, 'a'),
+ (0xa1, 'b'),
+ (0xa2, 'c'),
+ (0xa3, 'd'),
+ (0xa4, 'e'),
+ (0xa5, 'f'),
+ (0xa6, 'g'),
+ (0xa7, 'h'),
+ (0xa8, 'i'),
+ (0xa9, 'j'),
+ (0xaa, 'k'),
+ (0xab, 'l'),
+ (0xac, 'm'),
+ (0xad, 'n'),
+ (0xae, 'o'),
+ (0xaf, 'p'),
+ (0xb0, 'q'),
+ (0xb1, 'r'),
+ (0xb2, 's'),
+ (0xb3, 't'),
+ (0xb4, 'u'),
+ (0xb5, 'v'),
+ (0xb6, 'w'),
+ (0xb7, 'x'),
+ (0xb8, 'y'),
+ (0xb9, 'z'),
+ (0xe0, '\''),
+ (0xe3, '-'),
+ (0xe6, '?'),
+ (0xe7, '!'),
+ (0xe8, '.'),
+ (0xec, '▷'),
+ (0xed, '▶'),
+ (0xee, '▼'),
+ (0xef, '♂'),
+ (0xf1, '×'),
+ (0xf2, '.'),
+ (0xf3, '/'),
+ (0xf4, ','),
+ (0xf5, '♀'),
+ (0xf6, '0'),
+ (0xf7, '1'),
+ (0xf8, '2'),
+ (0xf9, '3'),
+ (0xfa, '4'),
+ (0xfb, '5'),
+ (0xfc, '6'),
+ (0xfd, '7'),
+ (0xfe, '8'),
+ (0xff, '9'),
+ (0x7f, ' '),
+ (0x50, '@'),
];
let mut map = HashMap::new();
@@ -162,7 +287,7 @@ impl TryFrom for PKString {
fn try_from(data: String) -> Result {
for chr in data.chars() {
- if ! STRTOHEX.contains_key(&chr) {
+ if !STRTOHEX.contains_key(&chr) {
return Err(Error::InvalidCharacter);
}
}