Initial commit

This commit is contained in:
EvilDeaaaadd 2019-08-01 02:00:09 +03:00
commit 9d102c1e08
3 changed files with 63 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
/target
**/*.rs.bk
Cargo.lock

11
Cargo.toml Normal file
View File

@ -0,0 +1,11 @@
[package]
name = "owoify"
version = "0.1.0"
authors = [""]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
regex = "1.2.0"
rand = "0.7.0"

49
src/lib.rs Normal file
View File

@ -0,0 +1,49 @@
use rand::prelude::*;
use regex::Regex;
use std::str::FromStr;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn owo() {
let text = String::from("malfunction me mom.. t-till i break~~");
let owoified = text.owoify();
println!("\t\t{}", owoified);
}
#[test]
fn all_match_owo() {
let text = String::from("r l R L na Na NA ove !!");
println!("\t\t{}", text.owoify());
}
}
pub trait OwOifiable {
fn owoify(&self) -> Self;
}
impl OwOifiable for String {
fn owoify(&self) -> Self {
let mut rng = rand::thread_rng();
let faces = ["(・`ω´・)", ";;w;;", "owo", "UwU", ">w<", "^w^"];
let face = &format!(" {} ", faces[rng.gen_range(0, faces.len())]).to_owned();
let pats: Vec<(&str, &str)> = vec![
("(?:r|l)", "w"),
("(?:R|L)", "W"),
("n([aeiou])", "ny$1"),
("N([aeiou])", "Ny$1"),
("N([AEIOU])", "Ny$1"),
("ove", "uv"),
("!+", face),
];
let mut owoified = String::from_str(&self).unwrap();
for &(f, t) in &pats {
let re = Regex::new(f).unwrap();
owoified = re.replace_all(&owoified, t).to_string();
}
owoified
}
}