private Node parseTag() { Token token = advance(); String name = token.getValue(); TagNode tagNode = new TagNode(); tagNode.setLineNumber(lexer.getLineno()); tagNode.setFileName(filename); tagNode.setName(name); tagNode.setValue(name); tagNode.setSelfClosing(token.isSelfClosing()); return this.tag(tagNode); }
public boolean canInline (){ Node block = this.getBlock(); if(block==null) return true; LinkedList<Node> nodes = block.getNodes(); // Empty tag if (nodes.size()==0) return true; // Text-only or inline-only tag if (1 == nodes.size()) return isInline(nodes.get(0)); // Multi-line inline-only tag if (everyIsInline(nodes)) { for (int i = 1, len = nodes.size(); i < len; ++i) { if (nodes.get(i-1) instanceof TextNode && nodes.get(i) instanceof TextNode) return false; } return true; } // Mixed tag return false; }; @Override
private boolean isEmpty() { return !hasBlock() && !hasTextNode() && !hasCodeNode(); }
private Node parseInterpolation() { Token token = advance(); String name = token.getValue(); TagNode tagNode = new TagNode(); tagNode.setLineNumber(lexer.getLineno()); tagNode.setFileName(filename); tagNode.setName(name); tagNode.setBuffer(true); return this.tag(tagNode); }
if(writer.isPp() && !isInline()){ writer.prettyIndent(0,true); if (isSelfClosing() || isSelfClosing(template)) { writer.append("<"); writer.append(bufferName(template, model)); writer.append(visitAttributes(model, template)); if (isTerse(template)) { writer.append(">"); }else { writer.append("/>"); if (hasBlock()) { writer.append(bufferName(template, model)); writer.append(visitAttributes(model, template)); writer.append(">"); if (hasCodeNode()) { codeNode.execute(writer, model, template); if (hasBlock()) { block.execute(writer, model, template); if (writer.isPp() && !isInline() && !"pre".equals(name) && !canInline()){ writer.prettyIndent(0, true); writer.append(bufferName(template,model)); writer.append(">");
private String bufferName(JadeTemplate template, JadeModel model) { if (isBuffer()) { try { return template.getExpressionHandler().evaluateStringExpression(name, model); } catch (ExpressionException e) { e.printStackTrace(); return null; } }else { return name; } }
private boolean everyIsInline(LinkedList<Node> nodes){ boolean multilineInlineOnlyTag = true; for (Node node : nodes) { if(!isInline(node)) multilineInlineOnlyTag = false; } return multilineInlineOnlyTag; } public boolean canInline (){
private boolean isInline(Node node){ // Recurse if the node is a block if (node instanceof BlockNode) return everyIsInline(node.getNodes()); return node instanceof TextNode || (ArrayUtils.indexOf(inlineTags,node.getName()) > -1); } private boolean everyIsInline(LinkedList<Node> nodes){
if(writer.isPp() && !isInline()){ writer.prettyIndent(0,true); if (isSelfClosing() || isSelfClosing(template)) { writer.append("<"); writer.append(bufferName(template, model)); writer.append(visitAttributes(model, template)); if (isTerse(template)) { writer.append(">"); }else { writer.append("/>"); if (hasBlock()) { writer.append(bufferName(template, model)); writer.append(visitAttributes(model, template)); writer.append(">"); if (hasCodeNode()) { codeNode.execute(writer, model, template); if (hasBlock()) { block.execute(writer, model, template); if (writer.isPp() && !isInline() && !"pre".equals(name) && !canInline()){ writer.prettyIndent(0, true); writer.append(bufferName(template,model)); writer.append(">");
private Node parseInterpolation() { Token token = advance(); String name = token.getValue(); TagNode tagNode = new TagNode(); tagNode.setLineNumber(lexer.getLineno()); tagNode.setFileName(filename); tagNode.setName(name); tagNode.setBuffer(true); return this.tag(tagNode); }
private String bufferName(JadeTemplate template, JadeModel model) { if (isBuffer()) { try { return template.getExpressionHandler().evaluateStringExpression(name, model); } catch (ExpressionException e) { e.printStackTrace(); return null; } }else { return name; } }
private boolean everyIsInline(LinkedList<Node> nodes){ boolean multilineInlineOnlyTag = true; for (Node node : nodes) { if(!isInline(node)) multilineInlineOnlyTag = false; } return multilineInlineOnlyTag; } public boolean canInline (){
private boolean isInline(Node node){ // Recurse if the node is a block if (node instanceof BlockNode) return everyIsInline(node.getNodes()); return node instanceof TextNode || (ArrayUtils.indexOf(inlineTags,node.getName()) > -1); } private boolean everyIsInline(LinkedList<Node> nodes){
private Node parseTag() { Token token = advance(); String name = token.getValue(); TagNode tagNode = new TagNode(); tagNode.setLineNumber(lexer.getLineno()); tagNode.setFileName(filename); tagNode.setName(name); tagNode.setValue(name); tagNode.setSelfClosing(token.isSelfClosing()); return this.tag(tagNode); }
private boolean isEmpty() { return !hasBlock() && !hasTextNode() && !hasCodeNode(); }
public boolean canInline (){ Node block = this.getBlock(); if(block==null) return true; LinkedList<Node> nodes = block.getNodes(); // Empty tag if (nodes.size()==0) return true; // Text-only or inline-only tag if (1 == nodes.size()) return isInline(nodes.get(0)); // Multi-line inline-only tag if (everyIsInline(nodes)) { for (int i = 1, len = nodes.size(); i < len; ++i) { if (nodes.get(i-1) instanceof TextNode && nodes.get(i) instanceof TextNode) return false; } return true; } // Mixed tag return false; }; @Override