mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 08:35:28 +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;
|
use regex::Regex;
|
||||||
|
|
||||||
const REGEX_BOLD: &str = r"\*\*(?P<text>[^*]+)\*\*";
|
const REGEX_BOLD: &str = r"\*\*(?P<text>[^\*]*)\*\*";
|
||||||
|
|
||||||
pub struct Bold(TextTag);
|
pub struct Bold(TextTag);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -112,19 +112,6 @@ 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);
|
||||||
|
|
||||||
// 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
|
// Create unique phantom tag for each header
|
||||||
// * for the #fragment references implementation
|
// * for the #fragment references implementation
|
||||||
let h = TextTag::new(Some(&format!("h{}", gtk::glib::uuid_string_random())));
|
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 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(
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ use gtk::{
|
||||||
};
|
};
|
||||||
use regex::Regex;
|
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_FONT: &str = "monospace"; // @TODO
|
||||||
const TAG_SCALE: f64 = 0.9;
|
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 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])
|
||||||
}
|
}
|
||||||
|
|
@ -63,7 +51,7 @@ impl Quote {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_regex() {
|
fn test_regex() {
|
||||||
let cap: Vec<_> = Regex::new(REGEX_QUOTE).unwrap().captures_iter(
|
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();
|
).collect();
|
||||||
{
|
{
|
||||||
let m = cap.first().unwrap();
|
let m = cap.first().unwrap();
|
||||||
|
|
@ -71,7 +59,7 @@ fn test_regex() {
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
let m = cap.get(1).unwrap();
|
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();
|
let m = cap.get(2).unwrap();
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ use gtk::{
|
||||||
};
|
};
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
const REGEX_STRIKE: &str = r"~~(?P<text>.+?)~~";
|
const REGEX_STRIKE: &str = r"~~(?P<text>[^~]*)~~";
|
||||||
|
|
||||||
pub struct Strike(TextTag);
|
pub struct Strike(TextTag);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ use gtk::{
|
||||||
};
|
};
|
||||||
use regex::Regex;
|
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);
|
pub struct Underline(TextTag);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue