fix autofmt: don't panic when writing blocks out without a srcfile (#2854)

* fix: don't panic when writing blocks out
* also fix serialization for hotreload
* fix windows line endings
This commit is contained in:
Jonathan Kelley authored and GitHub committed 2024-08-16 21:55:30 -07:00
1 parent b47a6cf83e
commit 4963aa3118
9 files changed
+142 -46

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
use dioxus_rsx::CallBody;
use proc_macro2::TokenStream as TokenStream2;
/// Ensure we can write RSX blocks without a source file
///
/// Useful in code generation use cases where we still want formatted code.
#[test]
fn write_block_out() {
let src = include_str!("./srcless/basic_expr.rsx");
let tokens: TokenStream2 = syn::parse_str(src).unwrap();
let parsed: CallBody = syn::parse2(tokens).unwrap();
let block = dioxus_autofmt::write_block_out(&parsed).unwrap();
// normalize line endings for windows tests to pass
pretty_assertions::assert_eq!(
block.trim().lines().collect::<Vec<_>>().join("\n"),
src.trim().lines().collect::<Vec<_>>().join("\n")
);
}
@@ -0,0 +1,42 @@
div {
"hi"
{children}
}
Fragment {
Fragment {
Fragment {
Fragment {
Fragment {
div { "Finally have a real node!" }
}
}
}
}
}
div { class, "hello world" }
h1 { class, "hello world" }
h1 { class, {children} }
h1 { class, id, {children} }
h1 { class,
"hello world"
{children}
}
h1 { id,
"hello world"
{children}
}
Other { class, children }
Other { class,
"hello world"
{children}
}
div {
class: "asdasd",
onclick: move |_| {
let a = 10;
let b = 40;
let c = 50;
},
"hi"
}
div { class: "asd", "Jon" }