mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-23 20:53:06 +00:00
fix: handle comments around attributes better
This commit is contained in:
parent
4471ccba49
commit
2634755620
3 changed files with 31 additions and 8 deletions
|
@ -136,8 +136,14 @@ impl Buffer {
|
|||
let mut total = 0;
|
||||
|
||||
for attr in attributes {
|
||||
if self.current_element_has_comments(attr.span()) {
|
||||
return 100000;
|
||||
if self.current_span_is_primary(attr.attr.start()) {
|
||||
'line: for line in self.src[..attr.attr.start().start().line - 1].iter().rev() {
|
||||
match (line.trim().starts_with("//"), line.is_empty()) {
|
||||
(true, _) => return 100000,
|
||||
(_, true) => continue 'line,
|
||||
_ => break 'line,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
total += match &attr.attr {
|
||||
|
@ -182,7 +188,7 @@ impl Buffer {
|
|||
pub fn retrieve_formatted_expr(&mut self, expr: &Expr) -> &str {
|
||||
self.cached_formats
|
||||
.entry(Location::new(expr.span().start()))
|
||||
.or_insert(prettyplease::unparse_expr(expr))
|
||||
.or_insert_with(|| prettyplease::unparse_expr(expr))
|
||||
.as_str()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -222,12 +222,13 @@ impl Buffer {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn current_element_has_comments(&self, location: Span) -> bool {
|
||||
// make sure the comments are actually relevant to this element.
|
||||
// test by making sure this element is the primary element on this line
|
||||
pub fn current_span_is_primary(&self, location: Span) -> bool {
|
||||
let start = location.start();
|
||||
let line_start = start.line;
|
||||
let line_start = start.line - 1;
|
||||
|
||||
// make sure the comments are actually relevant to this element.
|
||||
let this_line = self.src[line_start - 1].as_str();
|
||||
let this_line = self.src[line_start].as_str();
|
||||
|
||||
let beginning = if this_line.len() > start.column {
|
||||
this_line[..start.column].trim()
|
||||
|
@ -235,6 +236,8 @@ impl Buffer {
|
|||
""
|
||||
};
|
||||
|
||||
// dbg!(beginning);
|
||||
|
||||
beginning.is_empty()
|
||||
}
|
||||
|
||||
|
@ -251,7 +254,7 @@ impl Buffer {
|
|||
}
|
||||
|
||||
for child in children {
|
||||
if self.current_element_has_comments(child.span()) {
|
||||
if self.current_span_is_primary(child.span()) {
|
||||
'line: for line in self.src[..child.span().start().line - 1].iter().rev() {
|
||||
match (line.trim().starts_with("//"), line.is_empty()) {
|
||||
(true, _) => return None,
|
||||
|
|
|
@ -18,4 +18,18 @@ rsx! {
|
|||
// This here
|
||||
"hi"
|
||||
}
|
||||
|
||||
|
||||
// Comment head
|
||||
div {
|
||||
class: "asd",
|
||||
"Jon"
|
||||
}
|
||||
|
||||
// Comment head
|
||||
div {
|
||||
// Collapse
|
||||
class: "asd",
|
||||
"Jon"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue