private boolean hasNextToken(CodeReader code) { int lastChar = code.lastChar(); if (isJavaConstantStart(code.peek()) && !Character.isJavaIdentifierPart(lastChar) && !Character.isJavaIdentifierStart(lastChar) && lastChar != DOT) { String constant = code.peekTo(endTokenMatcher); int nextCharAfterConstant = code.peek(constant.length() + 1)[constant.length()]; if (nextCharAfterConstant != 0 && Character.isJavaIdentifierPart(nextCharAfterConstant)) { return false; } return true; } return false; }
public boolean match(int endFlag) { // return true on end of file if (endFlag == (char) -1) { return true; } // check for end script return (char) endFlag == '<' && END_SCRIPT.equalsIgnoreCase(new String(codeReader.peek(END_SCRIPT.length()))); } }
@Override public boolean match(int endFlag) { // return true on end of file if (endFlag == (char) -1) { return true; } // check for end script return (char) endFlag == '<' && END_SCRIPT.equalsIgnoreCase(new String(codeReader.peek(END_SCRIPT.length()))); } }
@Override public boolean match(int endFlag) { // return true on end of file if (endFlag == (char) -1) { return true; } // check for end script return (char) endFlag == '<' && END_SCRIPT.equalsIgnoreCase(new String(codeReader.peek(END_SCRIPT.length()))); } }
@Override public boolean match(int endFlag) { boolean match = false; if ('<' == endFlag || equalsIgnoreCase(codeReader.peek("${".length()), "${".toCharArray())) { match = true; } return match; } }
@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() == startToken[0] && Arrays.equals(code.peek(startToken.length), startToken)) { codeBuilder.appendWithoutTransforming(tagBefore); code.popTo(LINE_END_MATCHER, codeBuilder); codeBuilder.appendWithoutTransforming(tagAfter); return true; } else { return false; } }
private boolean consumeEndElement(CodeReader code, HtmlCodeBuilder codeBuilder, String endElement) { if (Arrays.equals(code.peek(endElement.length()), endElement.toCharArray())) { codeBuilder.appendWithoutTransforming(tagBeforeElement); // Consume end element for (int i = 0; i < endElement.length(); i++) { code.pop(codeBuilder); } codeBuilder.appendWithoutTransforming(tagAfterElement); setElementStarted(codeBuilder, false); return true; } return false; }
/** * @deprecated in 2.2, use {@link #popTo(Matcher matcher, Appendable appendable)} instead */ @Deprecated public final void popTo(EndMatcher matcher, Appendable appendable) { previousCursor = getCursor().clone(); try { do { appendable.append((char) pop()); } while (!matcher.match(peek()) && peek() != -1); } catch (IOException e) { throw new ChannelException(e.getMessage(), e); } }
private boolean consumeEndElement(CodeReader code, HtmlCodeBuilder codeBuilder, String endElement) { if (Arrays.equals(code.peek(endElement.length()), endElement.toCharArray())) { codeBuilder.appendWithoutTransforming(tagBeforeElement); // Consume end element for (int i = 0; i < endElement.length(); i++) { code.pop(codeBuilder); } codeBuilder.appendWithoutTransforming(tagAfterElement); setElementStarted(codeBuilder, false); return true; } return false; }
/** * Consume attribute value until eol or same quote */ private void consumeAttributeValueUntilQuoteOrEol(CodeReader code, HtmlCodeBuilder codeBuilder, char quote) { // consume attribute value until eol or same quote while (code.peek() != quote && code.peek() != '\r' && code.peek() != '\n') { code.pop(codeBuilder); } if (code.charAt(0) == quote) { // consume the closing quote code.pop(codeBuilder); setAttributeStarted(codeBuilder, false); setAttributeValueStarted(codeBuilder, null); } codeBuilder.appendWithoutTransforming(tagAfterAttributeValue); }
/** * Consume attribute value until eol or same quote */ private void consumeAttributeValueUntilQuoteOrEol(CodeReader code, HtmlCodeBuilder codeBuilder, char quote) { // consume attribute value until eol or same quote while (code.peek() != quote && code.peek() != '\r' && code.peek() != '\n') { code.pop(codeBuilder); } if (code.charAt(0) == quote) { // consume the closing quote code.pop(codeBuilder); setAttributeStarted(codeBuilder, false); setAttributeValueStarted(codeBuilder, null); } codeBuilder.appendWithoutTransforming(tagAfterAttributeValue); }
@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; } }
@Override public boolean consume(CodeReader code, HtmlCodeBuilder codeBuilder) { int lineNumber = code.getLinePosition(); if (code.peek() == LF || code.peek() == CR) { code.pop(); if (lineNumber != code.getLinePosition()) { codeBuilder.appendWithoutTransforming(getTagAfter()); codeBuilder.appendWithoutTransforming(getTagBefore()); } return true; } return false; }
public final void colorize(CodeReader code, HtmlCodeBuilder colorizedCode) { cloneNotThreadSafeTokenizers(); nextChar: while (code.peek() != -1) { for (Channel<HtmlCodeBuilder> codeTokenizer : tokenizers) { if (codeTokenizer.consume(code, colorizedCode)) { continue nextChar; } } colorizedCode.append((char) code.pop()); } }
@Override public boolean consume(CodeReader code, HtmlCodeBuilder codeBuilder) { if (!isElementStarted(codeBuilder)) { if (code.peek() == '<') { codeBuilder.appendWithoutTransforming(tagBeforeElement); // Consume element start code.popTo(Pattern.compile("<\\??[:\\w][:\\-\\.\\w]*").matcher(""), codeBuilder); codeBuilder.appendWithoutTransforming(tagAfterElement); setElementStarted(codeBuilder, true); return true; } return false; } else { // Element already started return consumeStartElement(code, codeBuilder); } }