diff options
| author | SavagePeanut <sourcehut@lazytapir.com> | 2023-09-03 17:28:57 -0500 |
|---|---|---|
| committer | SavagePeanut <sourcehut@lazytapir.com> | 2023-09-03 17:28:57 -0500 |
| commit | 788f64389f5479fcd23844740e7401a8a7870294 (patch) | |
| tree | a243a73025663ad4720eb83662c58d8e57c0223a /src | |
| parent | 2028c5a6cff6f5b860b6419cbc1b27a1260dcd00 (diff) | |
tests passing
Diffstat (limited to 'src')
| -rw-r--r-- | src/parser.rs | 1 | ||||
| -rw-r--r-- | src/telegram.rs | 17 |
2 files changed, 9 insertions, 9 deletions
diff --git a/src/parser.rs b/src/parser.rs index 53c38f6..4f5ae58 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -38,7 +38,6 @@ pub fn parse_with_limits(chars: &Vec<char>, start: usize, end: usize, depth: usi } match seek_end_block(chars, c, end_of_line, end, depth) { Some(to) => { - println!("to {}", to); if to != index + 3 && is_quote_start(chars, index, depth) { let keyword = if end_of_line == index + 3 { "```".to_string() diff --git a/src/telegram.rs b/src/telegram.rs index 74473c6..0774143 100644 --- a/src/telegram.rs +++ b/src/telegram.rs @@ -32,12 +32,7 @@ pub fn parse_for_telegram(body: String) -> PyResult<(String, Vec<(String, usize, } } - remove_tags.sort_by(|a, b| b.0.cmp(&a.0)); - - for (index, end) in remove_tags { - chars = [chars[..index].to_vec(), chars[end..].to_vec()].concat(); - } - + // is_start (*<--- start, end -->*), index of all_indexes, format, index of tag, language of codeblock let mut message_entities: Vec<(bool, usize, String, usize, String)> = Vec::with_capacity(styles.len() * 2); let mut all_indexes: Vec<Vec<usize>> = Vec::with_capacity(styles.len()); for (keyword, start, remove_start, end, remove_end) in &styles { @@ -49,7 +44,7 @@ pub fn parse_for_telegram(body: String) -> PyResult<(String, Vec<(String, usize, } else { "".to_string() }; - all_indexes.push(vec![*start, *remove_start, *end, *remove_end]); + all_indexes.push(vec![*start, *remove_start - *start, *end, *remove_end - *end]); let last_index = all_indexes.len() - 1; message_entities.push((true, last_index, TELEGRAM_STYLES.iter().find(|&&(k, _)| k == keyword).unwrap().1.to_string(), *start, language)); message_entities.push((false, last_index, "".to_string(), *end, "".to_string())); @@ -60,6 +55,12 @@ pub fn parse_for_telegram(body: String) -> PyResult<(String, Vec<(String, usize, } message_entities.sort_by(sort_message_entities); + remove_tags.sort_by(|a, b| b.0.cmp(&a.0)); + + for (index, end) in remove_tags { + chars = [chars[..index].to_vec(), chars[end..].to_vec()].concat(); + } + let formatted_text = chars.into_iter().collect::<String>(); let utf16_lengths: Vec<usize> = utf8_to_utf16_length(&formatted_text); @@ -78,7 +79,7 @@ pub fn parse_for_telegram(body: String) -> PyResult<(String, Vec<(String, usize, formatted_text, message_entities.into_iter() .filter(|(is_start, _, _, _, _)| { *is_start } ) - .map(|(_, index, format, _, language)| { (format, utf16_lengths[all_indexes[index][0]], utf16_lengths[all_indexes[index][2]], language) }) + .map(|(_, index, format, _, language)| { (format, utf16_lengths[all_indexes[index][0]], utf16_lengths[all_indexes[index][2] - 1] - utf16_lengths[all_indexes[index][0]], language) }) .collect() )) } |
