@Override public boolean consume(CodeReader code, Lexer lexer) { if (!Character.isJavaIdentifierStart(code.peek())) { return false; } int line = code.getCursor().getLine(); int column = code.getCursor().getColumn(); while (Character.isJavaIdentifierPart(code.peek())) { tmpBuilder.append((char) code.pop()); } String word = tmpBuilder.toString(); TokenType keywordType = keywordsMap.get(word); Token token = tokenBuilder .setType(keywordType == null ? GenericTokenType.IDENTIFIER : keywordType) .setValueAndOriginalValue(word, word) .setURI(lexer.getURI()) .setLine(line) .setColumn(column) .build(); lexer.addToken(token); tmpBuilder.delete(0, tmpBuilder.length()); return true; }
public boolean hasNextToken(CodeReader code, HtmlCodeBuilder codeBuilder) { return code.peek() != '\n' && code.peek() != '\r' && (isCommentStartedOnPreviousLine(codeBuilder) || (code.peek() == startToken[0] && Arrays.equals(code.peek(startToken.length), startToken))); }
@Override public boolean consume(CodeReader code, HtmlCodeBuilder codeBuilder) { if (code.peek() == '\'' || code.peek() == '\"') { codeBuilder.appendWithoutTransforming(tagBefore); int firstChar = code.peek(); code.popTo(new EndCommentMatcher(firstChar, code), codeBuilder); codeBuilder.appendWithoutTransforming(tagAfter); return true; } else { return false; } }
@Override public boolean consume(CodeReader code, HtmlCodeBuilder codeBuilder) { if (code.peek() == '@') { codeBuilder.appendWithoutTransforming(tagBefore); code.popTo(END_TOKEN_MATCHER, codeBuilder); codeBuilder.appendWithoutTransforming(tagAfter); return true; } else { return false; } }