public TagNode() { this.block = new BlockNode(); }
private Node parseTextBlock() { BlockNode blockNode = new BlockNode(); blockNode.setLineNumber(line()); blockNode.setFileName(filename); Token body = peek(); if(!(body instanceof PipelessText)){ return null; } this.advance(); ArrayList<String> values = body.getValues(); Node[] textNodes = {}; for (String value : values) { textNodes = ArrayUtils.addAll(textNodes,parseInlineTagsInText(value)); } blockNode.setNodes(new LinkedList<Node>(Arrays.asList(textNodes))); return blockNode; }
private BlockNode parseYield() { advance(); BlockNode block = new BlockNode(); block.setLineNumber(lexer.getLineno()); block.setFileName(filename); block.setYield(true); return block; } private Node parseInterpolation() {
private Node parseBlockExpansion(){ if (this.peek() instanceof Colon) { this.advance(); BlockNode blockNode = new BlockNode(); blockNode.push(this.parseExpr()); return blockNode; } else { return this.block(); } }
private Node blockExpansion() { if (peek() instanceof Colon) { Token token = expect(Colon.class); Colon colon = (Colon) token; BlockNode block = new BlockNode(); block.setLineNumber(colon.getLineNumber()); block.setFileName(filename); block.getNodes().add(parseExpr()); return block; } return block(); }
public Node parse() { BlockNode block = new BlockNode(); block.setLineNumber(lexer.getLineno()); block.setFileName(filename); while (!(peek() instanceof Eos)) { if (peek() instanceof Newline) { advance(); } else { Node expr = parseExpr(); if (expr != null) { block.push(expr); } } } if (extending != null) { getContexts().push(extending); Node rootNode = extending.parse(); getContexts().pop(); // hoist mixins Set<String> keySet = this.mixins.keySet(); for (String name : keySet) { rootNode.getNodes().push(this.mixins.get(name)); } return rootNode; } return block; }
private Node parseText() { Token tok = expect(Text.class); Node[] tokens = this.parseInlineTagsInText(tok.getValue()); if (tokens.length == 1) return tokens[0]; BlockNode node = new BlockNode(); for (int i = 0; i < tokens.length; i++) { node.push(tokens[i]); } node.setValue(tok.getValue()); node.setLineNumber(tok.getLineNumber()); node.setFileName(filename); return node; }
private Node parseWhile() { Token token = expect(While.class); While whileToken = (While) token; WhileNode node = new WhileNode(); node.setValue(whileToken.getValue()); node.setLineNumber(whileToken.getLineNumber()); node.setFileName(filename); BlockNode block = block(); if(block!=null) node.setBlock(block); else node.setBlock(new BlockNode()); return node; }
private BlockNode block() { BlockNode block = new BlockNode(); block.setLineNumber(lexer.getLineno()); block.setFileName(filename); expect(Indent.class); while (!(peek() instanceof Outdent)) { if (peek() instanceof Newline) { advance(); } else { Node parseExpr = this.parseExpr(); parseExpr.setFileName(filename); if (parseExpr != null) { block.push(parseExpr); } } } expect(Outdent.class); return block; }
private Node parseCall() { Token token = expect(Call.class); Call callToken = (Call) token; MixinNode mixin = new MixinNode(); mixin.setBlock(new BlockNode()); mixin.setName(callToken.getValue()); mixin.setLineNumber(callToken.getLineNumber()); mixin.setFileName(filename); mixin.setCall(true); if (StringUtils.isNotBlank(callToken.getArguments())) { mixin.setArguments(callToken.getArguments()); } this.tag(mixin); if(mixin.hasCodeNode()) { mixin.getBlock().push(mixin.getCodeNode()); mixin.setCodeNode(null); } if(mixin.hasBlock() && mixin.getBlock().getNodes().isEmpty()) mixin.setBlock(null); return mixin; }
private Node parseFilter() { Token token = expect(Filter.class); Filter filterToken = (Filter) token; AttributeList attr = (AttributeList) accept(AttributeList.class); lexer.setPipeless(true); Node tNode = parseTextBlock(); lexer.setPipeless(false); FilterNode node = new FilterNode(); node.setValue(filterToken.getValue()); node.setLineNumber(line()); node.setFileName(filename); if(tNode!=null) node.setTextBlock(tNode); else{ node.setTextBlock(new BlockNode()); } if (attr != null) { node.setAttributes(convertToNodeAttributes(attr)); } return node; }
} else if (peek() instanceof Colon) { Token next = advance(); BlockNode block = new BlockNode(); block.setLineNumber(next.getLineNumber()); block.setFileName(filename); Node block = this.parseTextBlock(); if(block == null) block = new BlockNode(); tagNode.setBlock(block); }else if(peek() instanceof Indent){
private Node parseCase() { String val = expect(CaseToken.class).getValue(); Node node = new CaseNode(); node.setValue(val); node.setLineNumber(line()); Node block = new BlockNode(); block.setLineNumber(line()); block.setFileName(filename); expect(Indent.class); while (!(peek() instanceof Outdent)) { if (peek() instanceof Comment) { advance(); } else if (peek() instanceof Newline) { advance(); } else if (peek() instanceof When) { block.push(parseWhen()); } else if (peek() instanceof Default) { block.push(parseDefault()); } else { throw new JadeParserException(filename,lexer.getLineno(),templateLoader,"Unexpected token \"" + this.peek() + "\", expected \"when\", \"default\" or \"newline\""); } } expect(Outdent.class); node.setBlock(block); return node; } /**
private Node parseBlockExpansion(){ if (this.peek() instanceof Colon) { this.advance(); BlockNode blockNode = new BlockNode(); blockNode.push(this.parseExpr()); return blockNode; } else { return this.block(); } }
private BlockNode parseYield() { advance(); BlockNode block = new BlockNode(); block.setLineNumber(lexer.getLineno()); block.setFileName(filename); block.setYield(true); return block; } private Node parseInterpolation() {
private Node blockExpansion() { if (peek() instanceof Colon) { Token token = expect(Colon.class); Colon colon = (Colon) token; BlockNode block = new BlockNode(); block.setLineNumber(colon.getLineNumber()); block.setFileName(filename); block.getNodes().add(parseExpr()); return block; } return block(); }
private Node parseText() { Token tok = expect(Text.class); Node[] tokens = this.parseInlineTagsInText(tok.getValue()); if (tokens.length == 1) return tokens[0]; BlockNode node = new BlockNode(); for (int i = 0; i < tokens.length; i++) { node.push(tokens[i]); } node.setValue(tok.getValue()); node.setLineNumber(tok.getLineNumber()); node.setFileName(filename); return node; }
private Node parseWhile() { Token token = expect(While.class); While whileToken = (While) token; WhileNode node = new WhileNode(); node.setValue(whileToken.getValue()); node.setLineNumber(whileToken.getLineNumber()); node.setFileName(filename); BlockNode block = block(); if(block!=null) node.setBlock(block); else node.setBlock(new BlockNode()); return node; }