parent
535afb4796
commit
0ddd756abf
|
@ -12,12 +12,21 @@ pub fn convert_matrix(message: &str) -> MessageContent {
|
|||
|
||||
let mut parents = vec![];
|
||||
let mut components = vec![];
|
||||
let mut skip_text = false;
|
||||
let mut skip_text = 0;
|
||||
let mut skip_all = 0;
|
||||
|
||||
for edge in dom.traverse() {
|
||||
match edge {
|
||||
NodeEdge::Start(node) => {
|
||||
if let NodeData::Element(element) = node.data() {
|
||||
if element.name.local == *"mx-reply" {
|
||||
skip_all += 1;
|
||||
}
|
||||
|
||||
if skip_all > 0 {
|
||||
continue;
|
||||
}
|
||||
|
||||
if element.name.ns == ns!(html) {
|
||||
match element.name.local {
|
||||
local_name!("strong")
|
||||
|
@ -41,7 +50,7 @@ pub fn convert_matrix(message: &str) -> MessageContent {
|
|||
}
|
||||
|
||||
local_name!("code") => {
|
||||
skip_text = true;
|
||||
skip_text += 1;
|
||||
}
|
||||
|
||||
_ => {}
|
||||
|
@ -52,12 +61,20 @@ pub fn convert_matrix(message: &str) -> MessageContent {
|
|||
|
||||
NodeEdge::End(node) => match node.data() {
|
||||
NodeData::Text(text) => {
|
||||
if !skip_text {
|
||||
if skip_text <= 0 && skip_all <= 0 {
|
||||
let text = text.borrow().lines().collect::<Vec<_>>().join(" ");
|
||||
components.push(MessageComponent::Plain(text));
|
||||
}
|
||||
}
|
||||
NodeData::Element(element) => {
|
||||
if element.name.local == *"mx-reply" {
|
||||
skip_all -= 1;
|
||||
}
|
||||
|
||||
if skip_all > 0 {
|
||||
continue;
|
||||
}
|
||||
|
||||
macro_rules! construct_component {
|
||||
($f:expr) => {{
|
||||
let component_type = $f;
|
||||
|
@ -142,7 +159,7 @@ pub fn convert_matrix(message: &str) -> MessageContent {
|
|||
MessageComponent::Code(node.text_contents())
|
||||
});
|
||||
|
||||
skip_text = false;
|
||||
skip_text -= 1;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue