From fd4ca8082eadc80f0ec879c49affc07ee122c889 Mon Sep 17 00:00:00 2001 From: Florian Dieminger Date: Sun, 1 Dec 2024 13:12:36 +0100 Subject: [PATCH] feat(issues): support sidebar name --- crates/rari-doc/src/html/sidebar.rs | 36 +++++++++++++------- crates/rari-doc/src/templ/templs/sidebars.rs | 6 ++-- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/crates/rari-doc/src/html/sidebar.rs b/crates/rari-doc/src/html/sidebar.rs index a67b3056..23391674 100644 --- a/crates/rari-doc/src/html/sidebar.rs +++ b/crates/rari-doc/src/html/sidebar.rs @@ -12,6 +12,7 @@ use rari_types::locale::{default_locale, Locale}; use rari_utils::concat_strs; use scraper::{Html, Node, Selector}; use serde::{Deserialize, Serialize, Serializer}; +use tracing::{span, Level}; use super::links::{render_link_from_page, render_link_via_page, LinkModifier}; use super::modifier::insert_attribute; @@ -110,7 +111,7 @@ pub fn render_sidebar(s: &str, slug: &str, locale: Locale) -> Result(sb); } let sidebar = read_sidebar(s, locale, slug)?; - let rendered_sidebar = sidebar.render(locale)?; + let rendered_sidebar = sidebar.render(s, locale)?; SIDEBAR_CACHE .entry(locale) .or_default() @@ -119,7 +120,7 @@ pub fn render_sidebar(s: &str, slug: &str, locale: Locale) -> Result(rendered_sidebar) } @@ -214,23 +215,34 @@ impl TryFrom for MetaSidebar { } impl MetaSidebar { - pub fn render(&self, locale: Locale) -> Result { + fn render_internal( + &self, + name: &str, + slug: Option<&str>, + locale: Locale, + ) -> Result { + let span = span!(Level::ERROR, "sidebar", sidebar = name,); + let _enter = span.enter(); let mut out = String::new(); out.push_str("
    "); for entry in &self.entries { - entry.render(&mut out, locale, None, &self.l10n)?; + entry.render(&mut out, locale, slug, &self.l10n)?; } out.push_str("
"); Ok(out) } - pub fn render_with_slug(&self, slug: &str, locale: Locale) -> Result { - let mut out = String::new(); - out.push_str("
    "); - for entry in &self.entries { - entry.render(&mut out, locale, Some(slug), &self.l10n)?; - } - out.push_str("
"); - Ok(out) + + pub fn render(&self, name: &str, locale: Locale) -> Result { + self.render_internal(name, None, locale) + } + + pub fn render_with_slug( + &self, + name: &str, + slug: &str, + locale: Locale, + ) -> Result { + self.render_internal(name, Some(slug), locale) } } diff --git a/crates/rari-doc/src/templ/templs/sidebars.rs b/crates/rari-doc/src/templ/templs/sidebars.rs index b22792f1..e4535849 100644 --- a/crates/rari-doc/src/templ/templs/sidebars.rs +++ b/crates/rari-doc/src/templ/templs/sidebars.rs @@ -6,17 +6,17 @@ use crate::sidebars::{apiref, default_api_sidebar, jsref}; #[rari_f] pub fn apiref(group: Option) -> Result { - apiref::sidebar(env.slug, group.as_deref(), env.locale)?.render(env.locale) + apiref::sidebar(env.slug, group.as_deref(), env.locale)?.render("apiref", env.locale) } #[rari_f] pub fn default_api_sidebar(group: String) -> Result { - default_api_sidebar::sidebar(&group, env.locale)?.render(env.locale) + default_api_sidebar::sidebar(&group, env.locale)?.render("default_api", env.locale) } #[rari_f] pub fn jsref() -> Result { - jsref::sidebar(env.slug, env.locale)?.render(env.locale) + jsref::sidebar(env.slug, env.locale)?.render("jsref", env.locale) } #[rari_f]