Implementirajte renderiranje u stilu HTML/template jezika u Rustu.

`go_html_template` je Rust biblioteka koja oponaša glavne radne tokove Go-ovog modula `html/template`. Pruža podršku za sintaksu predložaka, nizove operacija, sigurnosno prilagođeno izbjegavanje znakova, te blokiranje opasnih URL shema, uz zadržavanje poznatog API-ja.

API za predloške, sličan Go-u.

Koristite funkciju `Template::new(...).parse(...).execute(...)` uz mogućnosti definiranja, predložaka, raspona, uvjetnih izjava i cjevovoda.

Poboljšano izbjegavanje, prilagođeno kontekstu.

Primjenjuje prilagodljivu zaštitu (escaping) za HTML tekst, atribute, URL adrese i kontekste skripti/stilova, te blokira opasne JavaScript URL adrese.

Način rada "web-rust".

Funkcija "web-rust" onemogućuje funkcije `parse_files`, `parse_glob` i `parse_fs` kako bi se osiguralo učitavanje predložaka isključivo u memoriji.

Postavljanje i osnovna upotreba.

Dodajte biblioteku, a zatim provjerite minimalni proces parsiranja i izvršavanja koji rezultira tekstualnim izlazom. U okruženjima s web-rust tehnologijom, koristite tekstualne šablone pohranjene u memoriji umjesto API-ja za učitavanje datoteka.

Instaliraj.

cargo add go_html_template

Primjer korištenja jezika Rust.

src/main.rs
use go_html_template::{Template, Value};

fn main() -> Result<(), Box<dyn std::error::Error>> {
  let tpl = Template::new("page")
    .parse(r#"<h1>{{.Title}}</h1>\n<p>{{.Body | safe_html}}</p>"#)?;

  let out = tpl.execute_to_string(&serde_json::json!({
    "Title": "go_html_template",
    "Body": "<em>trusted</em>"
  }))?;

  println!("{out}");
  Ok(())
}
Status kompatibilnosti.

Trenutno, varijabla "go_html_template" sadrži... implementira ključne radne procese, istovremeno nastavljajući rješavati probleme kompatibilnosti. Još uvijek nije postignuta potpuna kompatibilnost s Go html/template-om, stoga provjerite ponašanje u vašim proizvodnim predložcima.