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

52 lines
1.4 KiB
Rust

#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use]
extern crate rocket;
use rocket_contrib::templates::Template;
use rocket_contrib::serve::StaticFiles;
use rocket::response::NamedFile;
use markov::Chain;
use std::collections::HashMap;
mod toki;
mod nimi_sin;
mod lipu_nimi;
#[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(1));
ijo.insert("toki".to_string(), toki::pali(&nimi_sin));
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
}