scan method
bool
scan(
- HtmlExternalScannerState state,
- TreeSitterExternalLexer lexer,
- List<
bool> validSymbols
override
Implementation
@override
bool scan(
HtmlExternalScannerState state,
TreeSitterExternalLexer lexer,
List<bool> validSymbols,
) {
while (_isWhitespace(lexer.lookahead)) {
lexer.advance(skip: true);
}
if (_valid(validSymbols, HtmlExternalToken.rawText.index) &&
!_valid(validSymbols, HtmlExternalToken.startTagName.index) &&
!_valid(validSymbols, HtmlExternalToken.endTagName.index)) {
return _scanRawText(state, lexer);
}
switch (lexer.lookahead) {
case 0x3c: // <
lexer.markEnd();
lexer.advance(skip: false);
if (lexer.lookahead == 0x21) {
lexer.advance(skip: false);
return _scanComment(lexer);
}
if (_valid(validSymbols, HtmlExternalToken.implicitEndTag.index)) {
return _scanImplicitEndTag(state, lexer);
}
break;
case 0:
if (_valid(validSymbols, HtmlExternalToken.implicitEndTag.index)) {
return _scanImplicitEndTag(state, lexer);
}
break;
case 0x2f: // /
if (_valid(
validSymbols,
HtmlExternalToken.selfClosingTagDelimiter.index,
)) {
return _scanSelfClosingTagDelimiter(state, lexer);
}
break;
default:
if ((_valid(validSymbols, HtmlExternalToken.startTagName.index) ||
_valid(validSymbols, HtmlExternalToken.endTagName.index)) &&
!_valid(validSymbols, HtmlExternalToken.rawText.index)) {
return _valid(validSymbols, HtmlExternalToken.startTagName.index)
? _scanStartTagName(state, lexer)
: _scanEndTagName(state, lexer);
}
}
return false;
}