Refactor emission logic of SAXParser and RewritingStream #268
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.
SAXParser
text end location (fixes Incorrect location info in SAXParser and RewritingStream #266).RewritingStream::_handleToken
toSAXParser::_handleToken
. This allowsSAXParser
to skip reshaping when no listeners are registered and simplifies interaction between two APIs.SAXParser::pendingText
to keep aCHARACTER
token instead of just chars. This aligns emission of pending text with other tokens and gives a single_emitToken
point forRewritingStream
to override (instead of additionally overriding_emitPendingText
with similar logic).SAXParser::currentTokenLocation
state, instead just retrieving location from current raw or processed token. It was needed mainly to track location for consequent text tokens, but sincependingText
is now a token, it can store its own location internally. This additionally allows allreshapeToken
helpers to become stateless and live outside of the class.