groowt/web-views/todo.md
2024-05-20 09:28:50 +02:00

36 lines
2.7 KiB
Markdown

# 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.
### Done
- [X] 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.
- [X] Get rid of sketching source set.
- Update 5/20/24: Done, but moved to `sketching/(java | groovy)/sketching` src set dirs.
- [X] 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() } />`.