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();