summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSavagePeanut <sourcehut@lazytapir.com>2023-09-03 17:28:57 -0500
committerSavagePeanut <sourcehut@lazytapir.com>2023-09-03 17:28:57 -0500
commit788f64389f5479fcd23844740e7401a8a7870294 (patch)
treea243a73025663ad4720eb83662c58d8e57c0223a /src
parent2028c5a6cff6f5b860b6419cbc1b27a1260dcd00 (diff)
tests passing
Diffstat (limited to 'src')
-rw-r--r--src/parser.rs1
-rw-r--r--src/telegram.rs17
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()
))
}