Jonathan Kelley bc3cf6501c feat: complete html to rsx rosetta 2 years ago
..
src bc3cf6501c feat: complete html to rsx rosetta 2 years ago
tests 4e330bc1ec chore: fix rsx printer 2 years ago
Cargo.toml d9546d9504 Renderers are now packages, not features. (#387) 3 years ago
README.md 181a51a63b wip: add whitespace parsing to rsx 2 years ago

README.md

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
  • ‹⁠›