diff --git a/crates/rari-doc/src/html/rewriter.rs b/crates/rari-doc/src/html/rewriter.rs index 7b62170..14e6357 100644 --- a/crates/rari-doc/src/html/rewriter.rs +++ b/crates/rari-doc/src/html/rewriter.rs @@ -2,7 +2,7 @@ use std::borrow::Cow; use std::collections::HashSet; use lol_html::html_content::ContentType; -use lol_html::{element, rewrite_str, HtmlRewriter, RewriteStrSettings, Settings}; +use lol_html::{element, rewrite_str, text, HtmlRewriter, RewriteStrSettings, Settings}; use rari_md::ext::DELIM_START; use rari_md::node_card::NoteCard; use rari_types::fm_types::PageType; @@ -48,6 +48,7 @@ pub fn post_process_html( ))?; let base_url = options.base_url(Some(&base)); let data_issues = settings().data_issues; + let mut in_pre = false; let mut element_content_handlers = vec![ element!("*[id]", |el| { @@ -106,6 +107,18 @@ pub fn post_process_html( el.set_attribute("class", &class)?; Ok(()) }), + text!("pre[class*=brush]", |text| { + // trim the first _empty_ line, + // fixes issue: https://github.com/mdn/yari/issues/12364 + if !in_pre && text.as_str().starts_with('\n') { + text.as_mut_str().remove(0); + } + in_pre = true; + if text.last_in_text_node() { + in_pre = false; + } + Ok(()) + }), element!("pre[class*=brush]", |el| { let class = el.get_attribute("class"); let class = class.as_deref().unwrap_or_default();