diff --git a/Cargo.toml b/Cargo.toml index 34ccdb9..0d6113f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.2" edition = "2021" license = "GPL-3.0-or-later" repository = "https://git.askiiart.net/askiiart/cat2text-rs" -authors = ["askiiart "] [profile.release] opt-level = 3 diff --git a/src/base4.rs b/src/base4.rs index 8230c65..cbd0716 100644 --- a/src/base4.rs +++ b/src/base4.rs @@ -1,5 +1,3 @@ -use std::ops::Deref; - use crate::core; pub fn alphabet() -> Vec { @@ -21,8 +19,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) -> String { - let text = text.as_ref(); +pub fn encode(text: String) -> String { // makes it lowercase and split by spaces let words: Vec = text .to_ascii_lowercase() @@ -86,44 +83,3 @@ pub fn decode(text: String) -> String { return output.trim().to_string(); } - - -pub mod bytes { - use crate::core; - use crate::base4::alphabet; -/// Encodes from bytes into catspeak -/// -/// ``` -/// use cat2text::base4::bytes::encode; -/// -/// assert_eq!("meow meow mreow mrrp meow meow meow mrrp", encode(&[9, 1])); -/// ``` -pub fn encode(bytes: impl AsRef<[u8]>) -> String { - let mut output = String::new(); - for byte in bytes.as_ref() { - output += core::num_to_cat(*byte as u32, alphabet(), 4).as_str(); - output += " "; - } - return output.trim().to_string(); -} - -/// Decodes catspeak into bytes -/// -/// ``` -/// use cat2text::base4::bytes::decode; -/// -/// assert_eq!(vec![9, 1], decode("meow meow mreow mrrp meow meow meow mrrp".to_string())); -/// ``` -pub fn decode(text: String) -> Vec { - let mut output: Vec = Vec::new(); - for byte in core::split_every_x(text.clone(), 4) { - output.push(core::cat_to_num( - byte.split(" ").map(|item| item.to_string()).collect(), - alphabet(), - 4, - ) as u8); - } - return output; -} - -} \ No newline at end of file diff --git a/src/bytes.rs b/src/bytes.rs new file mode 100644 index 0000000..874e993 --- /dev/null +++ b/src/bytes.rs @@ -0,0 +1,37 @@ +use crate::base4::alphabet; +use crate::core; + +/// Encodes from bytes into catspeak +/// +/// ``` +/// use cat2text::bytes::from_bytes; +/// +/// assert_eq!("meow meow mreow mrrp meow meow meow mrrp", from_bytes(vec![9, 1])); +/// ``` +pub fn from_bytes(bytes: Vec) -> String { + let mut output = "".to_string(); + for byte in bytes { + output += core::num_to_cat(byte as u32, alphabet(), 4).as_str(); + output += " "; + } + return output.trim().to_string(); +} + +/// Decodes catspeak into bytes +/// +/// ``` +/// use cat2text::bytes::to_bytes; +/// +/// assert_eq!(vec![9, 1], to_bytes("meow meow mreow mrrp meow meow meow mrrp".to_string())); +/// ``` +pub fn to_bytes(text: String) -> Vec { + let mut output: Vec = Vec::new(); + for byte in core::split_every_x(text.clone(), 4) { + output.push(core::cat_to_num( + byte.split(" ").map(|item| item.to_string()).collect(), + alphabet(), + 4, + ) as u8); + } + return output; +} diff --git a/src/lib.rs b/src/lib.rs index 354181a..974d5ed 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,4 +2,5 @@ pub mod anybase; pub mod base4; pub mod core; +pub mod bytes; mod tests;