skip escaped tags

This commit is contained in:
yggverse 2026-03-10 20:40:52 +02:00
parent c64f2d9a9b
commit 88a3e94f42
8 changed files with 120 additions and 0 deletions

View file

@ -35,6 +35,18 @@ impl Bold {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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;
}
let mut tags = start_iter.tags(); let mut tags = start_iter.tags();
tags.push(self.0.clone()); tags.push(self.0.clone());

View file

@ -105,6 +105,18 @@ impl Header {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
match cap["level"].chars().count() { match cap["level"].chars().count() {

View file

@ -61,6 +61,18 @@ pub fn render(buffer: &TextBuffer) {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
let item = Item::parse( let item = Item::parse(

View file

@ -53,6 +53,18 @@ impl Pre {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
buffer.insert_with_tags(&mut start_iter, &cap["text"], &[&self.0]) buffer.insert_with_tags(&mut start_iter, &cap["text"], &[&self.0])
} }

View file

@ -42,6 +42,18 @@ impl Quote {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
buffer.insert_with_tags(&mut start_iter, &cap["text"], &[&self.0]) buffer.insert_with_tags(&mut start_iter, &cap["text"], &[&self.0])
} }

View file

@ -129,6 +129,18 @@ pub fn render_images_links(
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
if let Some(this) = Reference::parse( if let Some(this) = Reference::parse(
@ -171,6 +183,18 @@ pub fn render_images(
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
if let Some(this) = Reference::parse( if let Some(this) = Reference::parse(
@ -210,6 +234,18 @@ pub fn render_links(
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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.delete(&mut start_iter, &mut end_iter);
if let Some(this) = Reference::parse( if let Some(this) = Reference::parse(

View file

@ -40,6 +40,18 @@ impl Strike {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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;
}
let mut tags = start_iter.tags(); let mut tags = start_iter.tags();
tags.push(self.0.clone()); tags.push(self.0.clone());

View file

@ -36,6 +36,18 @@ impl Underline {
let mut start_iter = buffer.iter_at_offset(start_char_offset); let mut start_iter = buffer.iter_at_offset(start_char_offset);
let mut end_iter = buffer.iter_at_offset(end_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;
}
let mut tags = start_iter.tags(); let mut tags = start_iter.tags();
tags.push(self.0.clone()); tags.push(self.0.clone());