cli dollcode encoder and decoder

don't decode to string by default

causes panic on invalid utf8, which we don't want to enforce

0xda157 a14b89f8 b0a75092

+10 -9
+1 -1
Cargo.lock
··· 185 185 186 186 [[package]] 187 187 name = "porcelain" 188 - version = "0.3.0" 188 + version = "0.3.1" 189 189 dependencies = [ 190 190 "clap", 191 191 "lib-porcelain",
+1 -1
Cargo.toml
··· 4 4 5 5 [package] 6 6 name = "porcelain" 7 - version = "0.3.0" 7 + version = "0.3.1" 8 8 license = "MIT" 9 9 authors = ["0xda157 <da157@voidq.com>"] 10 10 description = "cli dollcode encoder and decoder"
+4
README.md
··· 13 13 # ▖▖▘▘▌▘▌▌▘▘▘▌▌ 14 14 porcelain encode -x da157 # or --hex 15 15 # ▖▖▘▘▌▘▌▌▘▘▘▌▌ 16 + porcelain encode --string hello # or -s 17 + # ▖▖▖▌▘▖▖▌▘▘▌▖▌▖▘▌▖▌▖▖▘▌▌▘▖ 16 18 ``` 17 19 18 20 ### decode ··· 24 26 # 893271 25 27 porcelain decode --hex ▖▖▘▘▌▘▌▌▘▘▘▌▌ # or -x 26 28 # DA157 29 + porcelain decode --string ▖▖▖▌▘▖▖▌▘▘▌▖▌▖▘▌▖▌▖▖▘▌▌▘▖ # or -s 30 + # hello 27 31 ``` 28 32 29 33 ## packaged
+4 -7
src/main.rs
··· 99 99 #[cfg(not(feature = "bigint"))] 100 100 let res = u64::from_dollcode(dollcode).expect(err); 101 101 102 - let res_bytes = res.clone().to_be_bytes(); 103 - let str_res = str::from_utf8(&res_bytes).expect("failed to encode res as utf8"); 104 - 105 102 match dmatches.get_one("format").map(Id::as_ref) { 106 103 Some("decimial") => println!("{}", res), 107 104 Some("hex") => println!("{:X}", res), 108 - Some("string") => println!("{}", str_res), 109 - None => println!( 110 - "decimial: {}, hexadecimal: {:X}, string: {}", 111 - res, res, str_res 105 + Some("string") => println!( 106 + "{}", 107 + str::from_utf8(&res.clone().to_be_bytes()).expect("failed to encode res as utf8") 112 108 ), 109 + None => println!("decimial: {}, hexadecimal: {:X}", res, res), 113 110 Some(_) => unreachable!(), 114 111 } 115 112 }