Search in sources :

Example 1 with CharacterReference

use of net.htmlparser.jericho.CharacterReference in project vue-gwt by Axellience.

the class TemplateParser method processElement.

/**
 * Recursive method that will process the whole template DOM tree.
 * @param element Current element being processed
 */
private void processElement(Element element) {
    context.setCurrentSegment(element);
    currentProp = null;
    currentAttribute = null;
    Attributes attributes = element.getAttributes();
    Attribute vForAttribute = attributes != null ? attributes.get("v-for") : null;
    if (vForAttribute != null) {
        // Add a context layer for our v-for
        context.addContextLayer();
        // Process the v-for expression, and update our attribute
        String processedVForValue = processVForValue(vForAttribute.getValue());
        outputDocument.replace(vForAttribute.getValueSegment(), processedVForValue);
    }
    // Process the element
    if (attributes != null)
        processElementAttributes(element);
    // Process text segments
    StreamSupport.stream(((Iterable<Segment>) element::getNodeIterator).spliterator(), false).filter(segment -> !(segment instanceof Tag) && !(segment instanceof CharacterReference)).filter(segment -> {
        for (Element child : element.getChildElements()) if (child.encloses(segment))
            return false;
        return true;
    }).forEach(this::processTextNode);
    // Recurse downwards
    element.getChildElements().forEach(this::processElement);
    // After downward recursion, pop the context layer
    if (vForAttribute != null)
        context.popContextLayer();
}
Also used : Attributes(net.htmlparser.jericho.Attributes) TemplateExpression(com.axellience.vuegwt.processors.component.template.parser.result.TemplateExpression) CastExpr(com.github.javaparser.ast.expr.CastExpr) Any(jsinterop.base.Any) OutputDocument(net.htmlparser.jericho.OutputDocument) HashSet(java.util.HashSet) Matcher(java.util.regex.Matcher) Type(com.github.javaparser.ast.type.Type) GeneratorsUtil.stringTypeToTypeName(com.axellience.vuegwt.processors.utils.GeneratorsUtil.stringTypeToTypeName) Prop(com.axellience.vuegwt.core.annotations.component.Prop) VariableInfo(com.axellience.vuegwt.processors.component.template.parser.variable.VariableInfo) CharacterReference(net.htmlparser.jericho.CharacterReference) Expression(com.github.javaparser.ast.expr.Expression) StreamSupport(java.util.stream.StreamSupport) BinaryExpr(com.github.javaparser.ast.expr.BinaryExpr) Source(net.htmlparser.jericho.Source) LinkedList(java.util.LinkedList) Messager(javax.annotation.processing.Messager) NodeWithType(com.github.javaparser.ast.nodeTypes.NodeWithType) Element(net.htmlparser.jericho.Element) GeneratorsNameUtil.propNameToAttributeName(com.axellience.vuegwt.processors.utils.GeneratorsNameUtil.propNameToAttributeName) TemplateParserLoggerProvider(com.axellience.vuegwt.processors.component.template.parser.jericho.TemplateParserLoggerProvider) MethodCallExpr(com.github.javaparser.ast.expr.MethodCallExpr) TemplateParserResult(com.axellience.vuegwt.processors.component.template.parser.result.TemplateParserResult) Set(java.util.Set) NameExpr(com.github.javaparser.ast.expr.NameExpr) LocalComponent(com.axellience.vuegwt.processors.component.template.parser.context.localcomponents.LocalComponent) Config(net.htmlparser.jericho.Config) Collectors(java.util.stream.Collectors) LocalVariableInfo(com.axellience.vuegwt.processors.component.template.parser.variable.LocalVariableInfo) Attribute(net.htmlparser.jericho.Attribute) List(java.util.List) ParseProblemException(com.github.javaparser.ParseProblemException) Tag(net.htmlparser.jericho.Tag) TypeName(com.squareup.javapoet.TypeName) Optional(java.util.Optional) LocalComponentProp(com.axellience.vuegwt.processors.component.template.parser.context.localcomponents.LocalComponentProp) Pattern(java.util.regex.Pattern) TemplateParserContext(com.axellience.vuegwt.processors.component.template.parser.context.TemplateParserContext) Segment(net.htmlparser.jericho.Segment) JavaParser(com.github.javaparser.JavaParser) Attribute(net.htmlparser.jericho.Attribute) Element(net.htmlparser.jericho.Element) Attributes(net.htmlparser.jericho.Attributes) CharacterReference(net.htmlparser.jericho.CharacterReference) Tag(net.htmlparser.jericho.Tag)

Aggregations

Prop (com.axellience.vuegwt.core.annotations.component.Prop)1 TemplateParserContext (com.axellience.vuegwt.processors.component.template.parser.context.TemplateParserContext)1 LocalComponent (com.axellience.vuegwt.processors.component.template.parser.context.localcomponents.LocalComponent)1 LocalComponentProp (com.axellience.vuegwt.processors.component.template.parser.context.localcomponents.LocalComponentProp)1 TemplateParserLoggerProvider (com.axellience.vuegwt.processors.component.template.parser.jericho.TemplateParserLoggerProvider)1 TemplateExpression (com.axellience.vuegwt.processors.component.template.parser.result.TemplateExpression)1 TemplateParserResult (com.axellience.vuegwt.processors.component.template.parser.result.TemplateParserResult)1 LocalVariableInfo (com.axellience.vuegwt.processors.component.template.parser.variable.LocalVariableInfo)1 VariableInfo (com.axellience.vuegwt.processors.component.template.parser.variable.VariableInfo)1 GeneratorsNameUtil.propNameToAttributeName (com.axellience.vuegwt.processors.utils.GeneratorsNameUtil.propNameToAttributeName)1 GeneratorsUtil.stringTypeToTypeName (com.axellience.vuegwt.processors.utils.GeneratorsUtil.stringTypeToTypeName)1 JavaParser (com.github.javaparser.JavaParser)1 ParseProblemException (com.github.javaparser.ParseProblemException)1 BinaryExpr (com.github.javaparser.ast.expr.BinaryExpr)1 CastExpr (com.github.javaparser.ast.expr.CastExpr)1 Expression (com.github.javaparser.ast.expr.Expression)1 MethodCallExpr (com.github.javaparser.ast.expr.MethodCallExpr)1 NameExpr (com.github.javaparser.ast.expr.NameExpr)1 NodeWithType (com.github.javaparser.ast.nodeTypes.NodeWithType)1 Type (com.github.javaparser.ast.type.Type)1