66 lines
1.7 KiB
Rust
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
|
|
}
|