diff --git a/src/lipu_nimi.rs b/src/lipu_nimi.rs index a5a2261..131c868 100644 --- a/src/lipu_nimi.rs +++ b/src/lipu_nimi.rs @@ -1,4 +1,10 @@ use rand::seq::SliceRandom; + +///ni li pana e nimi mute tan lipu nimi +/// +///# wile +///`i` - linja open +///`j` - linja pini pub fn pana_lipu(i: usize, j: usize) -> Vec { let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap(); let mut kulupu_nimi = Vec::new(); @@ -10,6 +16,10 @@ pub fn pana_lipu(i: usize, j: usize) -> Vec { kulupu_nimi } +///ni li pana e nimi pi sona ala tan lipu nimi +/// +///# wile +///`i` - nimi li ken tan linja ni pub fn pana(i: &[usize]) -> String { let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap(); let mut kulupu_nimi = Vec::new(); @@ -21,6 +31,10 @@ pub fn pana(i: &[usize]) -> String { String::clone(kulupu_nimi.choose(&mut rand::thread_rng()).unwrap()) } +///ni li pana e nimi lili pi sona ala tan lipu nimi +/// +///# wile +///`i` - nimi lili li ken tan linja ni pub fn pana_lili(i: &[usize]) -> char { let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap(); let mut kulupu_nimi = Vec::new(); diff --git a/src/nimi_sin.rs b/src/nimi_sin.rs index 83b4d84..68980c2 100644 --- a/src/nimi_sin.rs +++ b/src/nimi_sin.rs @@ -1,6 +1,12 @@ use crate::lipu_nimi; use rand::Rng; +///ni li pali e nimi sin +///nimi sin la, nasin (C)V(N)(CV(N)) o lon +/// +///# wile +///`i` - suli pi nimi sin. ona li wan la, nimi sin li ken sama "ne" anu "nen". ona li tu la, "nene" +///anu "nenen" li ken kin pub fn pali(i: u8) -> String { let mut npsa = rand::thread_rng(); //ni li pali e nanpa pi sona ala (npsa) let mute = npsa.gen_range(1..i); //suli nimi la ken mute li lon @@ -12,7 +18,7 @@ pub fn pali(i: u8) -> String { while x < mute { let mut nimi: char; if rand::random() || x > 0 { - //kipisi 1 la nimi ni li ken lon li ken lon ala. kipisi mute la nimi ni li wile lon + //kipisi wan la nimi ni li ken lon li ken lon ala. kipisi mute la nimi ni li wile lon if nimi_pini == 'n' { nimi = lipu_nimi::pana_lili(&[3]); } else { diff --git a/src/toki.rs b/src/toki.rs index b675d38..41ea1cc 100644 --- a/src/toki.rs +++ b/src/toki.rs @@ -1,18 +1,29 @@ use crate::lipu_nimi; use rand::Rng; +/// ni li open e pali ante tawa pali pi toki sin +/// mi ni tan ni: lon lipu ante la, wile wan li pona. wile mute li ike. +/// +/// # wile +/// `nimi sin` - ni li nimi sin. nimi ni o lon toki pub fn pali(nimi_sin: &str) -> String { pali_lili(nimi_sin, true, false) //ilo li pali e toki la nimi "la" li ken lon la nimi sin li lon ala } -fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String { +/// ni li pali e pali suli +/// (ni la mi nimi "pali_lili" e ona tan seme a?) +/// +/// # arguments +/// `nimi_sin` - ni li nimi sin. nimi ni o lon toki +/// `la_li_ken` - nimi "la" li lon la nimi "la" li ken ala. ante la ona li ken +/// `nimi_sin_li_lon` - nimi sin li lon anu seme? +fn pali_lili(nimi_sin: &str, la_li_ken: bool, mut nimi_sin_li_lon: bool) -> String { let mut toki_sin = String::new(); let mut mi_anu_sina = false; 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 { @@ -33,15 +44,11 @@ fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String let mut y = 0; let suli_kipisi; if suli == 1 { - suli_kipisi = rand::thread_rng().gen_range(2_u8..4); + suli_kipisi = rand::thread_rng().gen_range(2_u8..4); //kipisi wan taso li lon la nimi tu anu nimi mute o lon kipisi } else { - suli_kipisi = rand::thread_rng().gen_range(1_u8..4); //kipisi la nimi tu tu li ken lon + suli_kipisi = rand::thread_rng().gen_range(1_u8..4); //ante la nimi wan li ken lon kin! } while y < suli_kipisi { - let nimi_ni = lipu_nimi::pana(&[0, 1]); - if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 { - mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso - } if (rand::thread_rng().gen_range(0_u8..4) == 0 || (x == suli - 1 && y == suli_kipisi - 1)) && !nimi_sin_li_lon @@ -49,6 +56,10 @@ fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String toki_sin.push_str(nimi_sin); //ilo li pana e nimi sin. nimi_sin_li_lon = true; //ni la, nimi sin li lon! } else { + let nimi_ni = lipu_nimi::pana(&[0, 1]); + if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 { + mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso + } toki_sin.push_str(nimi_ni.as_str()); } toki_sin.push_str(" "); @@ -61,9 +72,9 @@ fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String x += 1; } if la_anu_seme { + //nimi "la" li lon la, ilo li pali e toki sin li pana e toki ni toki_sin.push_str("la "); toki_sin.push_str(pali_lili(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 } toki_sin //ilo li pana e toki }