mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
update regular expressions, ignore backslash skip for header / list / quote tags as inline raw
This commit is contained in:
parent
84167ad745
commit
13e20f0df3
7 changed files with 6 additions and 43 deletions
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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())));
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 \n> Some quote 2 with text\nplain text\n> Some quote 3"
|
||||
"> Some quote 1 with \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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue