update regular expressions, ignore backslash skip for header / list / quote tags as inline raw

This commit is contained in:
yggverse 2026-03-12 01:46:45 +02:00
parent 84167ad745
commit 13e20f0df3
7 changed files with 6 additions and 43 deletions

View file

@ -5,7 +5,7 @@ use gtk::{
};
use regex::Regex;
const REGEX_BOLD: &str = r"\*\*(?P<text>[^*]+)\*\*";
const REGEX_BOLD: &str = r"\*\*(?P<text>[^\*]*)\*\*";
pub struct Bold(TextTag);

View file

@ -112,19 +112,6 @@ impl Header {
let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_char_offset);
// Skip escaped entries
if start_char_offset > 0
&& buffer
.text(
&buffer.iter_at_offset(start_char_offset - 1),
&end_iter,
false,
)
.contains("\\")
{
continue;
}
// Create unique phantom tag for each header
// * for the #fragment references implementation
let h = TextTag::new(Some(&format!("h{}", gtk::glib::uuid_string_random())));

View file

@ -61,18 +61,6 @@ pub fn render(buffer: &TextBuffer) {
let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_char_offset);
if start_char_offset > 0
&& buffer
.text(
&buffer.iter_at_offset(start_char_offset - 1),
&end_iter,
false,
)
.contains("\\")
{
continue;
}
buffer.delete(&mut start_iter, &mut end_iter);
let item = Item::parse(

View file

@ -6,7 +6,7 @@ use gtk::{
};
use regex::Regex;
const REGEX_PRE: &str = r"`(?P<text>[^`]+)`";
const REGEX_PRE: &str = r"`(?P<text>[^`]*)`";
const TAG_FONT: &str = "monospace"; // @TODO
const TAG_SCALE: f64 = 0.9;

View file

@ -42,18 +42,6 @@ impl Quote {
let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_char_offset);
if start_char_offset > 0
&& buffer
.text(
&buffer.iter_at_offset(start_char_offset - 1),
&end_iter,
false,
)
.contains("\\")
{
continue;
}
buffer.delete(&mut start_iter, &mut end_iter);
buffer.insert_with_tags(&mut start_iter, &cap["text"], &[&self.0])
}
@ -63,7 +51,7 @@ impl Quote {
#[test]
fn test_regex() {
let cap: Vec<_> = Regex::new(REGEX_QUOTE).unwrap().captures_iter(
"> Some quote 1 with ![img](https://link.com)\n> Some quote 2 with text\nplain text\n> Some quote 3"
"> Some quote 1 with ![img](https://link.com)\n> 2\\)Some quote 2 with text\nplain text\n> Some quote 3"
).collect();
{
let m = cap.first().unwrap();
@ -71,7 +59,7 @@ fn test_regex() {
}
{
let m = cap.get(1).unwrap();
assert_eq!(&m["text"], "Some quote 2 with text");
assert_eq!(&m["text"], "2\\)Some quote 2 with text");
}
{
let m = cap.get(2).unwrap();

View file

@ -5,7 +5,7 @@ use gtk::{
};
use regex::Regex;
const REGEX_STRIKE: &str = r"~~(?P<text>.+?)~~";
const REGEX_STRIKE: &str = r"~~(?P<text>[^~]*)~~";
pub struct Strike(TextTag);

View file

@ -6,7 +6,7 @@ use gtk::{
};
use regex::Regex;
const REGEX_UNDERLINE: &str = r"\b_(?P<text>[^_]+)_\b";
const REGEX_UNDERLINE: &str = r"\b_(?P<text>[^_]*)_\b";
pub struct Underline(TextTag);