diff --git a/Cargo.lock b/Cargo.lock
index 55b56ad0..12c76b1e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -801,11 +801,11 @@ dependencies = [
"anyhow",
"clap",
"html-minifier",
- "htmldiff",
"ignore",
"itertools",
"jsonpath_lib",
"prettydiff",
+ "quick-xml 0.36.2",
"rayon",
"regex",
"serde",
@@ -1335,12 +1335,6 @@ dependencies = [
"syn 2.0.79",
]
-[[package]]
-name = "htmldiff"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35b798ad26682ba974f035682fa7512c6b092262fc924f17cbb8fa54e464ea50"
-
[[package]]
name = "http"
version = "1.1.0"
@@ -2409,6 +2403,15 @@ dependencies = [
"memchr",
]
+[[package]]
+name = "quick-xml"
+version = "0.36.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "quinn"
version = "0.11.5"
@@ -3082,7 +3085,7 @@ dependencies = [
"hyper",
"indicatif",
"log",
- "quick-xml",
+ "quick-xml 0.23.1",
"regex",
"reqwest",
"self-replace",
diff --git a/crates/diff-test/Cargo.toml b/crates/diff-test/Cargo.toml
index 15274eba..07d3fad9 100644
--- a/crates/diff-test/Cargo.toml
+++ b/crates/diff-test/Cargo.toml
@@ -20,5 +20,5 @@ prettydiff = "0.7"
html-minifier = "5"
ansi-to-html = "0.2"
similar = "2"
-htmldiff = "0.1"
+quick-xml = "0.36"
clap = { version = "4.5.1", features = ["derive"] }
diff --git a/crates/diff-test/src/main.rs b/crates/diff-test/src/main.rs
index 8d3878cc..01c2105c 100644
--- a/crates/diff-test/src/main.rs
+++ b/crates/diff-test/src/main.rs
@@ -10,15 +10,17 @@ use std::sync::LazyLock;
use anyhow::{anyhow, Error};
use clap::{Args, Parser, Subcommand};
-use htmldiff::htmldiff;
use ignore::types::TypesBuilder;
use ignore::WalkBuilder;
use itertools::Itertools;
use jsonpath_lib::Compiled;
-use prettydiff::diff_words;
+use prettydiff::{diff_lines, diff_words};
use rayon::prelude::*;
use regex::Regex;
use serde_json::Value;
+use xml::fmt_html;
+
+mod xml;
fn html(body: &str) -> String {
format!(
@@ -243,21 +245,17 @@ fn full_diff(lhs: &Value, rhs: &Value, path: &[PathIndex], diff: &mut BTreeMap {
diff --git a/crates/diff-test/src/xml.rs b/crates/diff-test/src/xml.rs
new file mode 100644
index 00000000..921bd66b
--- /dev/null
+++ b/crates/diff-test/src/xml.rs
@@ -0,0 +1,22 @@
+use std::io::Cursor;
+
+use quick_xml::events::Event;
+use quick_xml::reader::Reader;
+use quick_xml::writer::Writer;
+
+pub fn fmt_html(html: &str) -> String {
+ let mut reader = Reader::from_str(html);
+ reader.config_mut().trim_text(true);
+ let mut writer = Writer::new_with_indent(Cursor::new(Vec::new()), b' ', 0);
+ loop {
+ match reader.read_event() {
+ Ok(Event::Eof) => break,
+ // we can either move or borrow the event to write, depending on your use-case
+ Ok(e) => assert!(writer.write_event(e).is_ok()),
+ _ => {}
+ }
+ }
+
+ let result = writer.into_inner().into_inner();
+ String::from_utf8(result).unwrap()
+}
diff --git a/crates/rari-doc/src/templ/templs/embeds/embedyoutube.rs b/crates/rari-doc/src/templ/templs/embeds/embedyoutube.rs
index 538492f6..6024b81e 100644
--- a/crates/rari-doc/src/templ/templs/embeds/embedyoutube.rs
+++ b/crates/rari-doc/src/templ/templs/embeds/embedyoutube.rs
@@ -1,6 +1,7 @@
use std::borrow::Cow;
use rari_templ_func::rari_f;
+use rari_utils::concat_strs;
use crate::error::DocError;
@@ -8,16 +9,14 @@ use crate::error::DocError;
pub fn embed_youtube(video_id: String, title: Option