mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-12-03 17:39:11 +00:00
1.6 KiB
1.6 KiB
This crate autofmts blocks of rsx!
This crate formats rsx! by parsing call bodies and pretty-printing them back out.
Todo:
Sorted roughly in order of what's possible
- Oneline rsx! calls - blocker because this wrecks formatting
- Nested RSX calls (important) - unnecessary but desirable
- RSX edits overstepping each other
- Collapse components and elements under syntax -
- Don't eat comments in exprs
- Format regular exprs
- Fix prettyplease around chaining
- Don't eat comments in prettyplease
Technique
div { div {} div {} }
div
possible line break div div
string of possible items within a nesting div { attr_pair expr text comment } a nesting is either a component or an element
idea: collect all items into a queue q
section {
div {
h1 { p { "asdasd" } }
h1 { p { "asdasd" } }
}
}
section {}
// space // space // space
3 - section 3 - section div 3 - section div h1 3 - section div h1 p 3 - section div h1 p text 3 - section 3 - section div 3 - section div h1 3 - section div h1 p 3 - section div h1 p text
block
- when we hit the end of a trail, we can make a decision what needs to be hard breaked
- most nestings cannot be merged into a single one, so at some point we need to write the line break
- this is the scan section. we scan forward until it's obvious where to place a hard break
- when a line is finished, we can print it out by unloading our queued items
- never double nested
Terms
- break is a whitespace than can flex, dependent on the situation
- ‹›