groowt/web-view-components/todo.md
2024-05-20 10:17:29 +02:00

2.8 KiB

TODO and general notes

TODO

  • Think about syntax for scriptlets. What semantic differences o we want between ${}, <%= %>, and <% %>.
  • Can the DollarScriptlet instead not include the dollar, more like React?
  • Think about namespaces. This could ease having to write imports, because the namespace would automatically be mapped to a star import. Syntax could be something like <turbo::Frame someKey='someVal' />.
  • Think about how GString are currently done. Do we need to even parse them as such, between element/component tags? Could we instead just have the writer variable take individual values? This would simplify implementation logic for differentiating between closures/scriplets that take an out (left-shiftable) param and ones that don't take any.
    • This could also make differentiating lazy/eager closures/scriptlets easier.
  • Check that the lexer/parser can handle - dashes in component names/types, so that we can support data-, etc.
  • Get rid of automatically generated script main and run methods; replace with a custom main method which forwards the args to a helper class and then runs the template with the variables similar to the current runTemplate helper tool.
  • Create a custom tool for compiling which simply forwards to the Groovy FileSystemCompiler but with the correct compiler configuration and parser plugin factory.
  • Create smoke screen test cases for the compiler.
  • Separate the api, runtime, and compiler elements. The api/runtime can depend on the compiler. If users really want to meddle with the compiler for some reason, they can depend on it directly.
  • Rename base package to groowt.view.component.web

Done

  • Fix inner class bug.
    • Update 5/20/24: Seems to be working now. N.b.: they are not truly 'inner' classes but rather classes that are added to the same module. We should always prefer to err on the side of what the usual groovy script semantics are.
  • Get rid of sketching source set.
    • Update 5/20/24: Done, but moved to sketching/(java | groovy)/sketching src set dirs.
  • Think more about how to compile templates and components alongside each other. Perhaps we just need to bite the bullet and use a custom Groovy CompilationUnit or CompilerConfiguration or whatnot to identify .wvc files.
    • Update 5/17/24: This should be solved with the DelegatingWvcParserPlugin which just examines the file extension.

Syntax ideas

  • Perhaps we could have a lambda- or closure-like factory at the beginning of a component for creating it. This could bypass the resolve mechanism and just instantiate the component directly via constructor (with some protocol). Something like: <Component::new ...> or <Component.&new ...>. Could also have <{ new Component() } />.