From 43f348e9bbe17ecb1ed123e726051e996391e149 Mon Sep 17 00:00:00 2001 From: yggverse Date: Mon, 9 Mar 2026 05:20:10 +0200 Subject: [PATCH] implement strip_tags filter --- .../item/page/content/text/markdown/tags.rs | 5 +-- .../content/text/markdown/tags/reference.rs | 36 +++++++++++++++++-- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags.rs index 7b1d065f..d3799ee8 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags.rs @@ -61,13 +61,14 @@ impl Tags { links: &mut HashMap, ) -> Option { // * keep in order! - let title = self.header.render(buffer); // @TODO strip raw tags + let title = self.header.render(buffer); + self.quote.render(buffer); reference::render_images_links(&buffer, base, &link_color, links); reference::render_images(&buffer, base, &link_color, links); reference::render_links(&buffer, base, &link_color, links); - title + title.map(|ref s| reference::strip_tags(s)) // @TODO other tags } } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/reference.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/reference.rs index 277e6458..9019e22f 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/reference.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/reference.rs @@ -221,11 +221,41 @@ pub fn render_links( } } +pub fn strip_tags(value: &str) -> String { + let mut result = String::from(value); + for cap in Regex::new(REGEX_LINK) + .unwrap() + .captures_iter(&value) + .into_iter() + { + if let Some(m) = cap.get(0) { + result = result.replace(m.as_str(), &cap["text"]); + } + } + result +} + +#[test] +fn test_strip_tags() { + const VALUE: &str = r"Some text [link1](https://link1.com) [link2](https://link2.com)"; + let mut result = String::from(VALUE); + for cap in Regex::new(REGEX_LINK) + .unwrap() + .captures_iter(VALUE) + .into_iter() + { + if let Some(m) = cap.get(0) { + result = result.replace(m.as_str(), &cap["text"]); + } + } + assert_eq!(result, "Some text link1 link2") +} + #[test] fn test_regex_link() { let cap: Vec<_> = Regex::new(REGEX_LINK) .unwrap() - .captures_iter(r#"[link1](https://link1.com) [link2](https://link2.com)"#) + .captures_iter(r"[link1](https://link1.com) [link2](https://link2.com)") .collect(); let first = cap.get(0).unwrap(); @@ -245,7 +275,7 @@ fn test_regex_image_link() { REGEX_IMAGE_LINK, ) .unwrap().captures_iter( - r#"[![image1](https://image1.com)](https://image2.com) [![image3](https://image3.com)](https://image4.com)"# + r"[![image1](https://image1.com)](https://image2.com) [![image3](https://image3.com)](https://image4.com)" ).collect(); let first = cap.get(0).unwrap(); @@ -271,7 +301,7 @@ fn test_regex_image_link() { fn test_regex_image() { let cap: Vec<_> = Regex::new(REGEX_IMAGE) .unwrap() - .captures_iter(r#"![image1](https://image1.com) ![image2](https://image2.com)"#) + .captures_iter(r"![image1](https://image1.com) ![image2](https://image2.com)") .collect(); let first = cap.get(0).unwrap();