-
Notifications
You must be signed in to change notification settings - Fork 26.3k
refactor(compiler): support interpolation and encoded entities when lexing markup #42062
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
refactor(compiler): support interpolation and encoded entities when lexing markup #42062
Conversation
049effb
to
c54d3dd
Compare
6f94cb4
to
ef6198e
Compare
67eab89
to
fd33222
Compare
aa344d9
to
bd5a087
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Reviewed-for: fw-playground
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left a bunch of comments. I would be curious to know how this would behave in TGP run, as that would give us a better feeling for how breaky this might be and/or which cases this doesn't handle correctly.
There's two typos in "refactor(compiler): support encoded entity tokens when lexing markup":
The lexer now splits encoded entity tokens out from text and attribute value tokens.
Previously encoded entities would be decoded andtheretheir decoded value would be
included as part of the text token of the surrounding text. Now the entities will have
their own tokens. There are two scenarios: text and attribute values.
The HTML parser has been modified to
recombinedrecombine these tokens to allow this
refactoring to have limited effect in this commit. Further refactorings
to use these new tokens will follow in subsequent commits.
@@ -1,6 +1,6 @@ | ||
<div class="zippy"> | ||
<div (click)="toggle()" class="zippy__title"> | ||
{{ visible ? '▾' : '▸' }} {{title}} | ||
{{ visible ? '\u25BE' : '\u25B8' }} {{title}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this change also means this would technically be a breaking change?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One person's bug fix is another person's breaking change... but perhaps you are right 😞
No doubt there will be loads of these in G3...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, this was a refactoring commit. I wonder how I can get this BREAKING CHANGE into the change log...
Perhaps I should rename this commit to a fix
? Where I am "fixing" the fact that interpolated blocks should not be decoding HTML entities??
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have added a commit that ensures this breaking change does not happen.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Rather than make this change here, and revert it later, can we squash the fix commit (I'm guessing refactor(compiler): ensure that HTML entities in interpolations are decoded
) into this one?
In general I'm a huge proponent of commits being independent - merging only half the commits from this PR shouldn't leave the repo in a broken state, for example.
bd5a087
to
7bca035
Compare
7bca035
to
451e3bf
Compare
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
The lexer now splits interpolation and encoded entity tokens out from the string it is tokenizing.
See individual commits...
Fixes #41034