From 8e6dc4b4dca8b6b97f1336e72f1843afe332bd33 Mon Sep 17 00:00:00 2001 From: yggverse Date: Thu, 2 Apr 2026 18:56:00 +0300 Subject: [PATCH] fix escaped chars handler; fix links alt render when it contains nested special `[]()` chars --- .../page/content/text/markdown/tags/bold.rs | 2 +- .../item/page/content/text/markdown/tags/hr.rs | 2 +- .../page/content/text/markdown/tags/italic.rs | 2 +- .../page/content/text/markdown/tags/pre.rs | 2 +- .../content/text/markdown/tags/reference.rs | 18 +++++++++--------- .../page/content/text/markdown/tags/strike.rs | 2 +- .../content/text/markdown/tags/underline.rs | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/bold.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/bold.rs index 013f930a..98a44335 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/bold.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/bold.rs @@ -42,7 +42,7 @@ impl Bold { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/hr.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/hr.rs index 8cfcc683..b1fbbe86 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/hr.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/hr.rs @@ -47,7 +47,7 @@ pub fn render(text_view: &TextView) { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/italic.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/italic.rs index 9c485ad8..f3b40425 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/italic.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/italic.rs @@ -56,7 +56,7 @@ fn render(this: &Italic, buffer: &TextBuffer, regex: &str) { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/pre.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/pre.rs index 0ff09dc0..d0e27157 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/pre.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/pre.rs @@ -60,7 +60,7 @@ impl Pre { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } 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 0ce45980..f0fd28d1 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 @@ -7,10 +7,10 @@ use gtk::{ use regex::Regex; use std::collections::HashMap; -const REGEX_LINK: &str = r"\[(?P[^\]]*)\]\((?P[^\)]+)\)"; -const REGEX_IMAGE: &str = r"!\[(?P[^\]]*)\]\((?P[^\)]+)\)"; +const REGEX_LINK: &str = r"\[(?P.*?)\]\((?P[^\)]+)\)"; +const REGEX_IMAGE: &str = r"!\[(?P.*?)\]\((?P[^\)]+)\)"; const REGEX_IMAGE_LINK: &str = - r"\[(?P!)\[(?P[^\]]*)\]\((?P[^\)]+)\)\]\((?P[^\)]+)\)"; + r"\[(?P!)\[(?P.*?)\]\((?P[^\)]+)\)\]\((?P[^\)]+)\)"; struct Reference { uri: Uri, @@ -136,7 +136,7 @@ fn render_images_links( &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } @@ -202,7 +202,7 @@ fn render_images( &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } @@ -253,7 +253,7 @@ fn render_links( &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } @@ -300,7 +300,7 @@ fn test_strip_tags() { 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 [square] (round)](https://link2.com)") .collect(); let first = cap.first().unwrap(); @@ -309,8 +309,8 @@ fn test_regex_link() { assert_eq!(&first["url"], "https://link1.com"); let second = cap.get(1).unwrap(); - assert_eq!(&second[0], "[link2](https://link2.com)"); - assert_eq!(&second["text"], "link2"); + assert_eq!(&second[0], "[link2 [square] (round)](https://link2.com)"); + assert_eq!(&second["text"], "link2 [square] (round)"); assert_eq!(&second["url"], "https://link2.com"); } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/strike.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/strike.rs index 7c0efb71..b05164cb 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/strike.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/strike.rs @@ -47,7 +47,7 @@ impl Strike { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; } diff --git a/src/app/browser/window/tab/item/page/content/text/markdown/tags/underline.rs b/src/app/browser/window/tab/item/page/content/text/markdown/tags/underline.rs index 9357208a..f0e65ead 100644 --- a/src/app/browser/window/tab/item/page/content/text/markdown/tags/underline.rs +++ b/src/app/browser/window/tab/item/page/content/text/markdown/tags/underline.rs @@ -43,7 +43,7 @@ impl Underline { &end_iter, false, ) - .contains("\\") + .starts_with("\\") { continue; }