ilo-pali-pi-nimi-sin/src/toki.rs

70 lines
3.9 KiB
Rust
Raw Normal View History

2022-05-02 16:52:19 +00:00
use rand::Rng;
pub fn pali(nimi_sin: &str) -> String {
2022-05-02 22:43:00 +00:00
let mut toki = String::new();
toki = pali_lili(toki, nimi_sin, true, false); //ilo li pali e toki la nimi "la" li ken lon la nimi sin li lon ala
toki //ilo li pana e toki
}
fn pali_lili(toki: String, nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String {
let kulupu_nimi = ["akesi", "ala", "alasa", "ale", "anpa", "ante", "awen", "esun", "ijo", "ike", "ilo", "insa", "jaki", "jan", "jelo", "jo", "kala", "kalama", "kama", "kasi", "ken", "kepeken", "kili", "kiwen", "ko", "kon", "kule", "kulupu", "kute", "lape", "laso", "lawa", "len", "lete", "lili", "linja", "lipu", "loje", "lon", "luka", "lukin", "lupa", "ma", "mama", "mani", "mi", "moku", "moli", "monsi", "mu", "mun", "musi", "mute", "nanpa", "nasa", "nasin", "nena", "ni", "nimi", "noka", "olin", "ona", "open", "pakala", "pali", "palisa", "pan", "pilin", "pimeja", "pini", "pipi", "poka", "poki", "pona", "pu", "sama", "seli", "selo", "seme", "sewi", "sike", "sin", "sina", "sinpin", "sona", "sitelen", "soweli", "suli", "suno", "supa", "suwi", "tan", "taso", "tawa", "telo", "tenpo", "toki", "tomo", "tu", "unpa", "uta", "utala", "walo", "wan", "waso", "wawa", "weka", "wile", "tonsi", "ku", "epiku", "jasima", "kijetesantakalu", "kin", "kipisi", "kokosila", "lanpan", "leko", "meso", "misikeke", "monsuta", "monsuta", "namako", "oko", "soko"]; //nimi pi ku suli
let kulupu_nimi_ante = ["kepeken", "sama", "tan", "tawa", "lon"]; //kepeken li nimi ni li sama ala kepeken pi nimi ante.
let mut toki_sin = String::clone(&toki);
2022-05-02 16:52:19 +00:00
let mut mi_anu_sina = false;
2022-05-02 22:43:00 +00:00
let mut la_anu_seme = rand::thread_rng().gen_range(0_u8..10) == 0;
if la_li_ken == false {
la_anu_seme = false;
}
let mut nimi_sin_li_lon = nimi_sin_li_lon_a;
let mut x = 0;
let suli = rand::thread_rng().gen_range(1_u8..4); // toki la, kipisi tu tu li ken lon.
while x < suli {
if x == 1 {
2022-05-02 16:52:19 +00:00
if rand::thread_rng().gen_range(0_u8..10) == 0 {
2022-05-02 22:43:00 +00:00
toki_sin.push_str("o "); //o li ken lon
} else if !mi_anu_sina {
toki_sin.push_str("li "); //nimi "mi" anu nimi "sina" li lon ala la nimi "li" li ken lon
2022-05-02 16:52:19 +00:00
}
}
2022-05-02 22:43:00 +00:00
if x == 2 {
toki_sin.push_str("e "); //nimi "e"
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
if x == 3 {
toki_sin.push_str(kulupu_nimi_ante[rand::thread_rng().gen_range(0..kulupu_nimi_ante.len())]); //nimi sama nimi "kepeken"
toki_sin.push_str(" ");
2022-05-02 16:52:19 +00:00
}
let mut y = 0;
2022-05-02 22:43:00 +00:00
let suli_kipisi;
if suli == 1 { suli_kipisi = rand::thread_rng().gen_range(2_u8..4);
} else {
suli_kipisi = rand::thread_rng().gen_range(1_u8..4); //kipisi la nimi tu tu li ken lon
}
2022-05-02 16:52:19 +00:00
while y < suli_kipisi {
2022-05-02 22:43:00 +00:00
let nimi_ni = kulupu_nimi[rand::thread_rng().gen_range(0..kulupu_nimi.len())];
if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 {
mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
if (rand::thread_rng().gen_range(0_u8..6) == 0 || (x == suli-1 && y == suli_kipisi-1)) && !nimi_sin_li_lon {
toki_sin.push_str(nimi_sin); //ilo li pana e nimi sin.
nimi_sin_li_lon = true; //ni la, nimi sin li lon!
2022-05-02 16:52:19 +00:00
} else {
2022-05-02 22:43:00 +00:00
toki_sin.push_str(kulupu_nimi[rand::thread_rng().
gen_range(0..kulupu_nimi.len())]); //ilo li pana e nimi pi ku suli
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
toki_sin.push_str(" ");
2022-05-02 16:52:19 +00:00
y += 1;
2022-05-02 22:43:00 +00:00
if suli_kipisi-y > 1 && rand::random() { //nimi "pi" li ken lon la, ona li ken lon!
toki_sin.push_str("pi ");
2022-05-02 16:52:19 +00:00
}
}
x += 1;
2022-05-02 22:43:00 +00:00
}
if la_anu_seme {
toki_sin.push_str("la ");
toki_sin.push_str(pali_lili(String::new(), nimi_sin, false, nimi_sin_li_lon).as_str()); //nimi "la" li lon la, ilo li pali e toki sin li pana e toki ni
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00
toki_sin //ilo li pana e toki
2022-05-02 16:52:19 +00:00
}
2022-05-02 22:43:00 +00:00