fix bytes stuff - STILL NEED TO FIX TESTS

This commit is contained in:
askiiart 2025-01-15 10:35:42 -06:00
parent 7111192081
commit 9fac0f3667
Signed by untrusted user who does not match committer: askiiart
GPG key ID: 6A32977DAF31746A
3 changed files with 31 additions and 16 deletions

View file

@ -91,10 +91,10 @@ pub mod bytes {
/// Encodes from bytes into catspeak
///
/// ```
/// use cat2text::{anybase::bytes::encode, core::char_length};
/// use cat2text::{anybase::bytes::encode, core::bytes::char_length};
///
/// let bytes = &[9, 1];
/// let base = 10;
/// let bytes = &[243];
/// let base = 16;
/// let char_length = char_length(base);
///
/// assert_eq!("meow mewo meow mrrp", encode(bytes, base, char_length));
@ -114,9 +114,9 @@ pub mod bytes {
/// Decodes catspeak into bytes
///
/// ```
/// use cat2text::{anybase::bytes::decode, core::char_length};
/// use cat2text::{anybase::bytes::decode, core::bytes::char_length};
///
/// let text = "mreow mrrp meow mrrp".to_string();
/// let text = "mrrp nyaaaa~ meow".to_string();
/// let base = 10;
/// let char_length = char_length(base);
///

View file

@ -9,11 +9,6 @@ pub fn alphabet() -> Vec<String> {
return tmp;
}
/// How many words long an english character is when translated to catspeak
pub fn char_length() -> u32 {
return 3;
}
/// Encodes english text into base 4 catspeak
///
/// ```
@ -22,7 +17,7 @@ pub fn char_length() -> u32 {
/// assert_eq!("meow mreow mrrp; meow mrow meow meow mrow mrow mrrp mrrp mreow meow mrrp mrrp; meow meow mrow meow meow mrrp mrrp mrrp meow mrrp meow mrow", encode("i love cats".to_string()))
/// ```
pub fn encode(text: impl AsRef<str>) -> String {
return anybase::encode(text.as_ref().to_string(), 4, char_length());
return anybase::encode(text.as_ref().to_string(), 4, core::char_length(4));
}
/// Decodes base 4 catspeak to english text
@ -33,22 +28,22 @@ pub fn encode(text: impl AsRef<str>) -> String {
/// assert_eq!("i love cats", decode("meow mreow mrrp; meow mrow meow meow mrow mrow mrrp mrrp mreow meow mrrp mrrp; meow meow mrow meow meow mrrp mrrp mrrp meow mrrp meow mrow".to_string()));
/// ```
pub fn decode(text: String) -> String {
return anybase::decode(text, 4, char_length());
return anybase::decode(text, 4, core::char_length(4));
}
pub mod bytes {
//! This handles encoding and decoding bytes to/from catspeak
use super::char_length;
use crate::anybase;
use crate::core::bytes::char_length;
/// Encodes from bytes into catspeak
///
/// ```
/// use cat2text::base4::bytes::encode;
///
/// assert_eq!("meow mreow mrrp meow meow mrrp", encode(&[9, 1]));
/// assert_eq!("meow mreow mrrp meow meow mrrp", encode(&[253..., 1]));
/// ```
pub fn encode(bytes: impl AsRef<[u8]>) -> String {
anybase::bytes::encode(bytes, 4, char_length())
anybase::bytes::encode(bytes, 4, char_length(4))
}
/// Decodes catspeak into bytes
@ -59,6 +54,6 @@ pub mod bytes {
/// assert_eq!(vec![9, 1], decode("meow mreow mrrp meow meow mrrp".to_string()));
/// ```
pub fn decode(text: String) -> Vec<u8> {
anybase::bytes::decode(text, 4, char_length())
anybase::bytes::decode(text, 4, char_length(4))
}
}

View file

@ -135,3 +135,23 @@ pub fn char_length(base: u32) -> u32 {
}
return u32::MAX;
}
pub mod bytes {
/// Returns the minimum catspeak words per character needed for this base for bytes
///
/// ```
/// use cat2text::core::bytes::char_length;
///
/// let base = 16;
/// assert_eq!(char_length(base), 2)
/// ```
pub fn char_length(base: u32) -> u32 {
for i in 1..base + 1 {
let num = base.pow(i);
if num > 255 {
return i;
}
}
return u32::MAX;
}
}