From 5e8d9ccf2f28936fabf6d155b37347d91a4fd1c5 Mon Sep 17 00:00:00 2001 From: SavagePeanut Date: Sat, 20 Jan 2024 18:59:41 -0600 Subject: style mentions. 1.6 --- src/matrix.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/matrix.rs') diff --git a/src/matrix.rs b/src/matrix.rs index 47fa984..cebddfd 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -14,13 +14,14 @@ const MATRIX_FORMATS: &[(&'static str, (&'static str, &'static str))] = &[ ]; #[pyfunction] -pub fn format_for_matrix(body: String) -> PyResult { +pub fn format_for_matrix(body: String, mentions: Option>) -> PyResult { let mut chars: Vec = body.chars().collect(); if chars.len() < 1 { return Ok(body); } - let styles: Vec<(String, usize, usize, usize, usize)> = parse_with_limits(&chars, 0, chars.len() - 1, 0); + let mentions = mentions.unwrap_or(Vec::with_capacity(0)); + let styles: Vec<(String, usize, usize, usize, usize)> = parse_with_limits(&chars, 0, chars.len() - 1, 0); let mut tags: Vec<(usize, String, usize)> = Vec::with_capacity(styles.len() * 2); for (keyword, start, remove_start, end, remove_end) in styles { if MATRIX_FORMATS.iter().any(|&(k, _)| k == keyword) { @@ -30,14 +31,18 @@ pub fn format_for_matrix(body: String) -> PyResult { .into_iter() .collect::()) } else { - MATRIX_FORMATS.iter().find(|&&(k, _)| k == keyword).unwrap().1.0.clone().to_string() + MATRIX_FORMATS.iter().find(|&&(k, _)| k == keyword).unwrap().1.0.clone().to_owned() }; tags.push((start, opening_tag, remove_start)); - tags.push((end, MATRIX_FORMATS.iter().find(|&&(k, _)| k == keyword).unwrap().1.1.clone().to_string(), remove_end)); + tags.push((end, MATRIX_FORMATS.iter().find(|&&(k, _)| k == keyword).unwrap().1.1.clone().to_owned(), remove_end)); } else if keyword == ">>" || keyword == "```>" || keyword == "\\" { - tags.push((start, "".to_string(), start+1)); + tags.push((start, String::new(), start+1)); } } + for (mxid, start, end) in mentions { + tags.push((start, "", start)); + tags.push((end, "".to_owned(), end)); + } tags.sort_by(|a, b| b.0.cmp(&a.0)); -- cgit v1.2.3