fix escaped chars handler; fix links alt render when it contains nested special []() chars

This commit is contained in:
yggverse 2026-04-02 18:56:00 +03:00
parent e0ee464a37
commit 8e6dc4b4dc
7 changed files with 15 additions and 15 deletions

View file

@ -42,7 +42,7 @@ impl Bold {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }

View file

@ -47,7 +47,7 @@ pub fn render(text_view: &TextView) {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }

View file

@ -56,7 +56,7 @@ fn render(this: &Italic, buffer: &TextBuffer, regex: &str) {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }

View file

@ -60,7 +60,7 @@ impl Pre {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }

View file

@ -7,10 +7,10 @@ use gtk::{
use regex::Regex; use regex::Regex;
use std::collections::HashMap; use std::collections::HashMap;
const REGEX_LINK: &str = r"\[(?P<text>[^\]]*)\]\((?P<url>[^\)]+)\)"; const REGEX_LINK: &str = r"\[(?P<text>.*?)\]\((?P<url>[^\)]+)\)";
const REGEX_IMAGE: &str = r"!\[(?P<alt>[^\]]*)\]\((?P<url>[^\)]+)\)"; const REGEX_IMAGE: &str = r"!\[(?P<alt>.*?)\]\((?P<url>[^\)]+)\)";
const REGEX_IMAGE_LINK: &str = const REGEX_IMAGE_LINK: &str =
r"\[(?P<is_img>!)\[(?P<alt>[^\]]*)\]\((?P<img_url>[^\)]+)\)\]\((?P<link_url>[^\)]+)\)"; r"\[(?P<is_img>!)\[(?P<alt>.*?)\]\((?P<img_url>[^\)]+)\)\]\((?P<link_url>[^\)]+)\)";
struct Reference { struct Reference {
uri: Uri, uri: Uri,
@ -136,7 +136,7 @@ fn render_images_links(
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }
@ -202,7 +202,7 @@ fn render_images(
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }
@ -253,7 +253,7 @@ fn render_links(
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }
@ -300,7 +300,7 @@ fn test_strip_tags() {
fn test_regex_link() { fn test_regex_link() {
let cap: Vec<_> = Regex::new(REGEX_LINK) let cap: Vec<_> = Regex::new(REGEX_LINK)
.unwrap() .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(); .collect();
let first = cap.first().unwrap(); let first = cap.first().unwrap();
@ -309,8 +309,8 @@ fn test_regex_link() {
assert_eq!(&first["url"], "https://link1.com"); assert_eq!(&first["url"], "https://link1.com");
let second = cap.get(1).unwrap(); let second = cap.get(1).unwrap();
assert_eq!(&second[0], "[link2](https://link2.com)"); assert_eq!(&second[0], "[link2 [square] (round)](https://link2.com)");
assert_eq!(&second["text"], "link2"); assert_eq!(&second["text"], "link2 [square] (round)");
assert_eq!(&second["url"], "https://link2.com"); assert_eq!(&second["url"], "https://link2.com");
} }

View file

@ -47,7 +47,7 @@ impl Strike {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }

View file

@ -43,7 +43,7 @@ impl Underline {
&end_iter, &end_iter,
false, false,
) )
.contains("\\") .starts_with("\\")
{ {
continue; continue;
} }