mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-23 20:53:06 +00:00
88 lines
1.6 KiB
Markdown
88 lines
1.6 KiB
Markdown
# 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
|
||
|
||
- [x] 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
|
||
```rust
|
||
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
|
||
- ‹›
|