#![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::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 { 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 }