chore: tweak template generation logic #13283
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#13075 added support for expressions in templates, but I think we can neaten it up a bit — rather than creating new
push_quasi
andpush_expression
functions,state.template
can just be anArray<string | Expression>
that gets processed later. This is more efficient, and in line with how similar problems are solved elsewhere in the codebase. (In terms of variable naming: it's awkward to have an array with a singular name —quasi
— which then forces the individual quasi to be called something cumbersome likequasi_to_add
. It should just bequasis.push(quasi)
! Though really it should have beenstrings.push(string)
, because we're not actually dealing with quasis at this point.)Another benefit of this approach is that we can vary the output more easily — we could, if we chose, emit
"a" + b + "c"
instead of`a${b}c`
more easily than if we're constructing the expression on the fly.Before submitting the PR, please make sure you do the following
feat:
,fix:
,chore:
, ordocs:
.Tests and linting
pnpm test
and lint the project withpnpm lint