ilo lili la lipu li kama pona

This commit is contained in:
tess 2022-05-05 04:11:15 +02:00
parent ba89c4aba5
commit 235998c5d9
9 changed files with 99 additions and 47 deletions

View File

@ -2,7 +2,7 @@ use rand::seq::SliceRandom;
pub fn pana_lipu(i: usize, j: usize) -> Vec<String> { pub fn pana_lipu(i: usize, j: usize) -> Vec<String> {
let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap(); let lipu_nimi = std::fs::read_to_string("nimi_ale.txt").unwrap();
let mut kulupu_nimi = Vec::new(); let mut kulupu_nimi = Vec::new();
for nanpa in i..j+1 { for nanpa in i..j + 1 {
for nimi in lipu_nimi.lines().nth(nanpa).unwrap().split_whitespace() { for nimi in lipu_nimi.lines().nth(nanpa).unwrap().split_whitespace() {
kulupu_nimi.push(String::from(nimi)); kulupu_nimi.push(String::from(nimi));
} }

View File

@ -1,15 +1,15 @@
#![feature(proc_macro_hygiene, decl_macro)] #![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] #[macro_use]
extern crate rocket; extern crate rocket;
use rocket_contrib::templates::Template;
use rocket_contrib::serve::StaticFiles;
use rocket::response::NamedFile;
use markov::Chain; use markov::Chain;
use std::collections::HashMap;
use rand::Rng; use rand::Rng;
mod toki; use rocket::response::NamedFile;
mod nimi_sin; use rocket_contrib::serve::StaticFiles;
use rocket_contrib::templates::Template;
use std::collections::HashMap;
mod lipu_nimi; mod lipu_nimi;
mod nimi_sin;
mod toki;
#[get("/")] #[get("/")]
fn nimi() -> Template { fn nimi() -> Template {
@ -23,16 +23,22 @@ fn seme() -> Option<NamedFile> {
} }
fn main() { fn main() {
rocket::ignite().attach(Template::fairing()).mount("/", routes![nimi]) rocket::ignite()
.attach(Template::fairing())
.mount("/", routes![nimi])
.mount("/static", StaticFiles::from("static")) .mount("/static", StaticFiles::from("static"))
.mount("/", routes![seme]).launch(); //o pana e lipu ale .mount("/", routes![seme])
.launch(); //o pana e lipu ale
} }
fn o_pali_e_lipu() -> HashMap<String, String> { fn o_pali_e_lipu() -> HashMap<String, String> {
let mut ijo = HashMap::new(); let mut ijo = HashMap::new();
let nimi_sin = nimi_sin::pali(4); let nimi_sin = nimi_sin::pali(4);
ijo.insert("nimisin".to_string(), nimi_sin.clone()); //o pana e ijo tawa nasin lipu ijo.insert("nimisin".to_string(), nimi_sin.clone()); //o pana e ijo tawa nasin lipu
ijo.insert("kon".to_string(), markov(rand::thread_rng().gen_range(1..3))); ijo.insert(
"kon".to_string(),
markov(rand::thread_rng().gen_range(1..3)),
);
let mut nanpa = 1; let mut nanpa = 1;
let mut toki_mute = String::new(); let mut toki_mute = String::new();
while nanpa < rand::thread_rng().gen_range(2..5) { while nanpa < rand::thread_rng().gen_range(2..5) {
@ -44,7 +50,8 @@ fn o_pali_e_lipu() -> HashMap<String, String> {
ijo ijo
} }
fn markov(nanpa: u8) -> String { // pali e nimi sin kepeken ilo Mako. fn markov(nanpa: u8) -> String {
// pali e nimi sin kepeken ilo Mako.
let mut mako = Chain::new(); let mut mako = Chain::new();
let mut x = 0; let mut x = 0;
let mut kon = String::new(); let mut kon = String::new();
@ -56,4 +63,3 @@ fn markov(nanpa: u8) -> String { // pali e nimi sin kepeken ilo Mako.
} }
kon kon
} }

View File

@ -1,5 +1,5 @@
use rand::Rng;
use crate::lipu_nimi; use crate::lipu_nimi;
use rand::Rng;
pub fn pali(i: u8) -> String { pub fn pali(i: u8) -> String {
let mut npsa = rand::thread_rng(); //ni li pali e nanpa pi sona ala (npsa) let mut npsa = rand::thread_rng(); //ni li pali e nanpa pi sona ala (npsa)
@ -11,34 +11,37 @@ pub fn pali(i: u8) -> String {
while x < mute { while x < mute {
let mut nimi: char; 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 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
if nimi_pini == 'n' { if nimi_pini == 'n' {
nimi = lipu_nimi::pana_lili(&[3]); nimi = lipu_nimi::pana_lili(&[3]);
} else { } else {
nimi = lipu_nimi::pana_lili(&[3,4]); nimi = lipu_nimi::pana_lili(&[3, 4]);
} }
nimi_sin.push(nimi); nimi_sin.push(nimi);
nimi_pini = nimi; nimi_pini = nimi;
} }
//o wuwojiti ala //o wuwojiti ala
if nimi_pini == 'w' { if nimi_pini == 'w' {
nimi = lipu_nimi::pana_lili(&[5,7]); nimi = lipu_nimi::pana_lili(&[5, 7]);
} else if nimi_pini == 'j' || nimi_pini == 't' { } else if nimi_pini == 'j' || nimi_pini == 't' {
nimi = lipu_nimi::pana_lili(&[5,6]); nimi = lipu_nimi::pana_lili(&[5, 6]);
} else { } else {
nimi = lipu_nimi::pana_lili(&[5,6,7]); nimi = lipu_nimi::pana_lili(&[5, 6, 7]);
} }
nimi_sin.push(nimi); nimi_sin.push(nimi);
if rand::thread_rng().gen_range(0..10) == 0 { //nimi n li ken lon. TENPO KAMA LA mi ken wile e ni: nimi n li lon la, ante li lon ala. ante li lon la, nimi n li lon ala if rand::thread_rng().gen_range(0..10) == 0 {
//nimi n li ken lon. TENPO KAMA LA mi ken wile e ni: nimi n li lon la, ante li lon ala. ante li lon la, nimi n li lon ala
nimi = 'n'; nimi = 'n';
nimi_sin.push(nimi); nimi_sin.push(nimi);
} }
nimi_pini = nimi; nimi_pini = nimi;
x += 1; x += 1;
} }
if lipu_nimi::pana_lipu(0,2).contains(&nimi_sin) { //nimi sin li sin ala la, o pali sin e nimi if lipu_nimi::pana_lipu(0, 2).contains(&nimi_sin) {
return pali(i) //nimi sin li sin ala la, o pali sin e nimi
return pali(i);
} }
nimi_sin //o pana e nimi sin nimi_sin //o pana e nimi sin
} }

View File

@ -1,7 +1,5 @@
use rand::Rng;
use crate::lipu_nimi; use crate::lipu_nimi;
use rand::Rng;
pub fn pali(nimi_sin: &str) -> String { 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 pali_lili(nimi_sin, true, false) //ilo li pali e toki la nimi "la" li ken lon la nimi sin li lon ala
@ -34,16 +32,20 @@ fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String
} }
let mut y = 0; let mut y = 0;
let suli_kipisi; let suli_kipisi;
if suli == 1 { suli_kipisi = rand::thread_rng().gen_range(2_u8..4); if suli == 1 {
suli_kipisi = rand::thread_rng().gen_range(2_u8..4);
} else { } 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); //kipisi la nimi tu tu li ken lon
} }
while y < suli_kipisi { while y < suli_kipisi {
let nimi_ni = lipu_nimi::pana(&[0,1]); let nimi_ni = lipu_nimi::pana(&[0, 1]);
if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 { if (nimi_ni == "mi" || nimi_ni == "sina") && suli_kipisi == 1 {
mi_anu_sina = true; //nimi li nimi "mi" taso anu nimi "sina" taso 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 { if (rand::thread_rng().gen_range(0_u8..4) == 0
|| (x == suli - 1 && y == suli_kipisi - 1))
&& !nimi_sin_li_lon
{
toki_sin.push_str(nimi_sin); //ilo li pana e nimi sin. toki_sin.push_str(nimi_sin); //ilo li pana e nimi sin.
nimi_sin_li_lon = true; //ni la, nimi sin li lon! nimi_sin_li_lon = true; //ni la, nimi sin li lon!
} else { } else {
@ -51,16 +53,17 @@ fn pali_lili(nimi_sin: &str, la_li_ken: bool, nimi_sin_li_lon_a: bool) -> String
} }
toki_sin.push_str(" "); toki_sin.push_str(" ");
y += 1; y += 1;
if suli_kipisi-y > 1 && rand::random() { //nimi "pi" li ken lon la, ona li ken lon! if suli_kipisi - y > 1 && rand::random() {
//nimi "pi" li ken lon la, ona li ken lon!
toki_sin.push_str("pi "); toki_sin.push_str("pi ");
} }
} }
x += 1; x += 1;
} }
if la_anu_seme { if la_anu_seme {
toki_sin.push_str("la "); 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.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 toki_sin //ilo li pana e toki
} }

BIN
static/linja-nanpa.otf Normal file

Binary file not shown.

View File

@ -8,6 +8,10 @@
</head> </head>
<body> <body>
<header id=header>
<h1>󱤎󱥉<a href="/" class=nena>󱥍󱦒󱥂󱥝</a></h1>
</header>
<div class=poki> <div class=poki>
<h2 class=nimisin>ilo ni li seme??</h2> <h2 class=nimisin>ilo ni li seme??</h2>
<p class=kon>toki a! ilo ni li pali e nimi sin. kin la, ona li pali e kon pi nimi sin, li pali e toki kepeken nimi sin ni.<br> <p class=kon>toki a! ilo ni li pali e nimi sin. kin la, ona li pali e kon pi nimi sin, li pali e toki kepeken nimi sin ni.<br>
@ -19,7 +23,8 @@
<p class=kon>mi a! mi <a href="https://tess.kittycat.homes" class="toki">soweli Tesa</a>! <p class=kon>mi a! mi <a href="https://tess.kittycat.homes" class="toki">soweli Tesa</a>!
</div> </div>
<footer id="footer" class=toki> <footer class=toki id="footer" class=toki>
<a href="seme">ni li seme</a> <a href="seme">󱥁󱤧󱥙</a>
<a href="./">o pana e nimi sin</a> <span>|</span>
<a href="/">󱥂󱥝</a>
</footer> </footer>

View File

@ -10,8 +10,12 @@
font-family: toki; font-family: toki;
src:url("OpenSans-Regular.ttf"); src:url("OpenSans-Regular.ttf");
} }
@font-face {
font-family: sitelen pona;
src:url("linja-nanpa.otf");
}
#footer { #footer {
bottom : 40px; bottom : 40px;
height : 40px; height : 40px;
margin-top : 40px; margin-top : 40px;
@ -19,22 +23,32 @@
vertical-align: middle; vertical-align: middle;
position:fixed; position:fixed;
width:100%; width:100%;
font-family: sitelen pona;
} }
#footer * { #header {
margin-right: 40px; top:40px;
margin-left: 40px; height:40px;
margin-bottom:40px;
text-align:center;
vertical-align:middle;
position:static;
width:100%;
font-family: sitelen pona;
} }
pre { pre {
white-space: pre-wrap; white-space: pre-wrap;
} }
body { body {
background-color: #f8f8ff; background-color: #f8f8ff;
font-size:150% font-size:150%;
} }
a { a {
text-decoration: none; text-decoration: none;
} }
@ -43,14 +57,23 @@ a:hover {
text-decoration: underline; text-decoration: underline;
} }
@media (min-width:600px) {
.nimisin-poki { .nimisin-poki {
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
-moz-transform: translateX(-50%) translateY(-50%); -moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%);
} }
}
@media (max-width:600px) {
.nimisin-poki {
padding-bottom:60px;
}
}
.nimisin { .nimisin {
font-family: nimi sin; font-family: nimi sin;
@ -68,4 +91,13 @@ a:hover {
font-style: italic; font-style: italic;
} }
.nena {
color: #7979ff;
}
.nena:hover {
text-shadow: 0 0 5px #7979ff;
text-decoration:none;
}

View File

@ -8,6 +8,9 @@
</head> </head>
<body> <body>
<header id=header>
<h2>󱤎󱥉<a href="/" class=nena>󱥍󱦒󱥂󱥝</a></h2>
</header>
<div class=nimisin-poki> <div class=nimisin-poki>
<h1 class=nimisin>{{nimisin}}</h1> <h1 class=nimisin>{{nimisin}}</h1>
@ -15,10 +18,10 @@
<pre class=toki>{{toki}}</pre> <pre class=toki>{{toki}}</pre>
</div> </div>
<footer id="footer" class="toki"> <footer id=footer>
<a href="seme">ni li seme</a> <a class=toki href="seme">󱥁󱤧󱥙</a>
<a href="/">o pana e nimi sin</a> <span class=toki>|</span>
<a class=toki href="/">󱥂󱥝</a>
</footer> </footer>
</body> </body>
</html> </html>

BIN
󱥠󱤹.xcf Normal file

Binary file not shown.