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

66 lines
1.7 KiB
Rust

#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate rocket;
use markov::Chain;
use rand::Rng;
use rocket::response::NamedFile;
use rocket_contrib::serve::StaticFiles;
use rocket_contrib::templates::Template;
use std::collections::HashMap;
mod lipu_nimi;
mod nimi_sin;
mod toki;
#[get("/")]
fn nimi() -> Template {
let lipu = o_pali_e_lipu();
Template::render("index", &lipu) //o pali e lipu pi nimi sin
}
#[get("/seme")]
fn seme() -> Option<NamedFile> {
NamedFile::open("static/ni-li-seme.html").ok() //o pali e lipu sona
}
fn main() {
rocket::ignite()
.attach(Template::fairing())
.mount("/", routes![nimi])
.mount("/static", StaticFiles::from("static"))
.mount("/", routes![seme])
.launch(); //o pana e lipu ale
}
fn o_pali_e_lipu() -> HashMap<String, String> {
let mut ijo = HashMap::new();
let nimi_sin = nimi_sin::pali(4);
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)),
);
let mut nanpa = 1;
let mut toki_mute = String::new();
while nanpa < rand::thread_rng().gen_range(2..5) {
toki_mute.push_str(format!("//{}\n", toki::pali(&nimi_sin)).as_str());
nanpa += 1;
}
ijo.insert("toki".to_string(), toki_mute);
ijo
}
fn markov(nanpa: u8) -> String {
// pali e nimi sin kepeken ilo Mako.
let mut mako = Chain::new();
let mut x = 0;
let mut kon = String::new();
mako.feed_file("nimi").expect("lipu li lon ala a");
while x < nanpa {
kon.push_str(mako.generate_str().as_str());
kon.push_str(" ");
x += 1;
}
kon
}