diff --git a/Cargo.lock b/Cargo.lock index 192a7bd89..24cc37201 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -164,6 +164,48 @@ dependencies = [ "stable_deref_trait", ] +[[package]] +name = "askama" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a4e46abb203e00ef226442d452769233142bbfdd79c3941e84c8e61c4112543" +dependencies = [ + "askama_derive", + "itoa 1.0.15", + "percent-encoding", + "serde", + "serde_json", +] + +[[package]] +name = "askama_derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54398906821fd32c728135f7b351f0c7494ab95ae421d41b6f5a020e158f28a6" +dependencies = [ + "askama_parser", + "basic-toml", + "memchr", + "proc-macro2", + "quote", + "rustc-hash 2.1.1", + "serde", + "serde_derive", + "syn 2.0.100", +] + +[[package]] +name = "askama_parser" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf315ce6524c857bb129ff794935cf6d42c82a6cff60526fe2a63593de4d0d4f" +dependencies = [ + "memchr", + "serde", + "serde_derive", + "winnow", +] + [[package]] name = "assert-json-diff" version = "1.1.0" @@ -1758,6 +1800,7 @@ name = "docs-rs" version = "0.6.0" dependencies = [ "anyhow", + "askama", "async-stream", "async-trait", "aws-config", @@ -1812,7 +1855,6 @@ dependencies = [ "rayon", "regex", "reqwest", - "rinja", "rusqlite", "rustwide", "semver", @@ -3397,15 +3439,6 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" -[[package]] -name = "humansize" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" -dependencies = [ - "libm", -] - [[package]] name = "hyper" version = "0.14.32" @@ -5213,47 +5246,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rinja" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dc4940d00595430b3d7d5a01f6222b5e5b51395d1120bdb28d854bb8abb17a5" -dependencies = [ - "humansize", - "itoa 1.0.15", - "percent-encoding", - "rinja_derive", -] - -[[package]] -name = "rinja_derive" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d9ed0146aef6e2825f1b1515f074510549efba38d71f4554eec32eb36ba18b" -dependencies = [ - "basic-toml", - "memchr", - "mime", - "mime_guess", - "proc-macro2", - "quote", - "rinja_parser", - "rustc-hash 2.1.1", - "serde", - "syn 2.0.100", -] - -[[package]] -name = "rinja_parser" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f9a866e2e00a7a1fb27e46e9e324a6f7c0e7edc4543cae1d38f4e4a100c610" -dependencies = [ - "memchr", - "nom", - "serde", -] - [[package]] name = "roxmltree" version = "0.14.1" diff --git a/Cargo.toml b/Cargo.toml index 8f0458388..bc9e9f19c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ tempfile = "3.1.0" fn-error-context = "0.2.0" # Templating -rinja = "0.3.4" +askama = "0.13" walkdir = "2" # Date and Time utilities diff --git a/src/utils/html.rs b/src/utils/html.rs index ba457c397..b7bc32658 100644 --- a/src/utils/html.rs +++ b/src/utils/html.rs @@ -1,8 +1,8 @@ use crate::web::page::templates::{Body, Head, Vendored}; use crate::web::rustdoc::RustdocPage; +use askama::Template; use lol_html::element; use lol_html::errors::RewritingError; -use rinja::Template; /// Rewrite a rustdoc page to have the docs.rs topbar /// @@ -45,7 +45,7 @@ pub(crate) fn rewrite_lol( rustdoc_body_class.set_attribute("tabindex", "-1")?; // Change the `body` to a `div` rustdoc_body_class.set_tag_name("div")?; - // Prepend the rinja content + // Prepend the askama content rustdoc_body_class.prepend(&body_html, ContentType::Html); // Wrap the transformed body and topbar into a
element rustdoc_body_class.before(r#""#, ContentType::Html); diff --git a/src/web/build_details.rs b/src/web/build_details.rs index c9fa46687..78b8c7235 100644 --- a/src/web/build_details.rs +++ b/src/web/build_details.rs @@ -12,10 +12,10 @@ use crate::{ }, }; use anyhow::Context as _; +use askama::Template; use axum::{extract::Extension, response::IntoResponse}; use chrono::{DateTime, Utc}; use futures_util::TryStreamExt; -use rinja::Template; use semver::Version; use serde::Deserialize; use std::sync::Arc; diff --git a/src/web/builds.rs b/src/web/builds.rs index 6b78ebffe..e353d53a3 100644 --- a/src/web/builds.rs +++ b/src/web/builds.rs @@ -17,6 +17,7 @@ use crate::{ }, }; use anyhow::{Result, anyhow}; +use askama::Template; use axum::{ Json, extract::Extension, http::header::ACCESS_CONTROL_ALLOW_ORIGIN, response::IntoResponse, }; @@ -27,7 +28,6 @@ use axum_extra::{ use chrono::{DateTime, Utc}; use constant_time_eq::constant_time_eq; use http::StatusCode; -use rinja::Template; use semver::Version; use std::sync::Arc; @@ -670,7 +670,7 @@ mod tests { dbg!(&values); assert!(values.contains(&"6.44 GB")); assert!(values.contains(&"2 hours")); - assert!(values.contains(&"102.40 kB")); + assert!(values.contains(&"102.4 kB")); assert!(values.contains(&"blocked")); assert!(values.contains(&"1")); diff --git a/src/web/crate_details.rs b/src/web/crate_details.rs index 18d970fa3..ae5dd7922 100644 --- a/src/web/crate_details.rs +++ b/src/web/crate_details.rs @@ -18,6 +18,7 @@ use crate::{ }, }; use anyhow::{Context, Result, anyhow}; +use askama::Template; use axum::{ extract::Extension, response::{IntoResponse, Response as AxumResponse}, @@ -25,7 +26,6 @@ use axum::{ use chrono::{DateTime, Utc}; use futures_util::stream::TryStreamExt; use log::warn; -use rinja::Template; use semver::Version; use serde::Deserialize; use serde_json::Value; diff --git a/src/web/features.rs b/src/web/features.rs index 0e7d4fe23..97e7534a3 100644 --- a/src/web/features.rs +++ b/src/web/features.rs @@ -13,8 +13,8 @@ use crate::{ }, }; use anyhow::anyhow; +use askama::Template; use axum::response::IntoResponse; -use rinja::Template; use serde_json::Value; use std::collections::{BTreeMap, HashMap, HashSet, VecDeque}; diff --git a/src/web/mod.rs b/src/web/mod.rs index 835f9ce9b..8cdfb249d 100644 --- a/src/web/mod.rs +++ b/src/web/mod.rs @@ -10,8 +10,8 @@ use crate::utils::get_correct_docsrs_style_file; use crate::utils::report_error; use crate::web::page::templates::{RenderSolid, filters}; use anyhow::{Context as _, Result, anyhow, bail}; +use askama::Template; use axum_extra::middleware::option_layer; -use rinja::Template; use serde_json::Value; use tracing::{info, instrument}; diff --git a/src/web/page/templates.rs b/src/web/page/templates.rs index 252e945ab..59b069e0d 100644 --- a/src/web/page/templates.rs +++ b/src/web/page/templates.rs @@ -1,7 +1,7 @@ use crate::error::Result; use crate::web::rustdoc::RustdocPage; use anyhow::Context; -use rinja::Template; +use askama::Template; use std::sync::Arc; use tracing::trace; @@ -88,12 +88,12 @@ impl TemplateData { } pub mod filters { + use askama::filters::Safe; use chrono::{DateTime, Utc}; - use rinja::filters::Safe; use std::borrow::Cow; // Copied from `tera`. - pub fn escape_html(input: &str) -> rinja::Result