private boolean consumeEndOfTagElement(CodeReader code, HtmlCodeBuilder codeBuilder) { return consumeEndElement(code, codeBuilder, "/>") || consumeEndElement(code, codeBuilder, "?>") || consumeEndElement(code, codeBuilder, ">"); }
} else if (!isAttributeStarted(codeBuilder)) { if (consumeEndOfTagElement(code, codeBuilder)) { return true; setAttributeStarted(codeBuilder, true); } else { if (!isAttributeValueStarted(codeBuilder)) { if (code.peek() == '=') { } else if (code.peek() == '\'' || code.peek() == '"') { char quote = (char) code.peek(); setAttributeValueStarted(codeBuilder, quote); codeBuilder.appendWithoutTransforming(tagBeforeAttributeValue); consumeAttributeValueUntilQuoteOrEol(code, codeBuilder, quote); return true; } else { char quote = getAttributeQuote(codeBuilder); codeBuilder.appendWithoutTransforming(tagBeforeAttributeValue); consumeAttributeValueUntilQuoteOrEol(code, codeBuilder, quote); return true;
@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); } }
/** * 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); }
public static List<Tokenizer> createTokenizers() { return Arrays.asList( new CDataDocTokenizer(span("k"), END_TAG), new RegexpTokenizer(span("j"), END_TAG, "<!DOCTYPE.*>"), new MultilinesDocTokenizer("<!--", "-->", span("j"), END_TAG), new MultilinesDocTokenizer("</", ">", span("k"), END_TAG), new XmlStartElementTokenizer(span("k"), END_TAG, span("c"), END_TAG, span("s"), END_TAG)); }
} else if (!isAttributeStarted(codeBuilder)) { if (consumeEndOfTagElement(code, codeBuilder)) { return true; setAttributeStarted(codeBuilder, true); } else { if (!isAttributeValueStarted(codeBuilder)) { if (code.peek() == '=') { } else if (code.peek() == '\'' || code.peek() == '"') { char quote = (char) code.peek(); setAttributeValueStarted(codeBuilder, quote); codeBuilder.appendWithoutTransforming(tagBeforeAttributeValue); consumeAttributeValueUntilQuoteOrEol(code, codeBuilder, quote); return true; } else { char quote = getAttributeQuote(codeBuilder); codeBuilder.appendWithoutTransforming(tagBeforeAttributeValue); consumeAttributeValueUntilQuoteOrEol(code, codeBuilder, quote); return true;
@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); } }
/** * 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); }
public static List<Tokenizer> createTokenizers() { return Arrays.asList( new CDataDocTokenizer(span("k"), END_TAG), new DoctypeTokenizer(span("j"), END_TAG), new MultilinesDocTokenizer("<!--", "-->", span("j"), END_TAG), new MultilinesDocTokenizer("</", ">", span("k"), END_TAG), new XmlStartElementTokenizer(span("k"), END_TAG, span("c"), END_TAG, span("s"), END_TAG)); }
private boolean consumeEndOfTagElement(CodeReader code, HtmlCodeBuilder codeBuilder) { return consumeEndElement(code, codeBuilder, "/>") || consumeEndElement(code, codeBuilder, "?>") || consumeEndElement(code, codeBuilder, ">"); }