private Node parseMixin() { Mixin mixinToken = (Mixin) expect(Mixin.class); MixinNode node = new MixinNode(); node.setName(mixinToken.getValue()); node.setLineNumber(mixinToken.getLineNumber()); node.setFileName(filename); if (StringUtils.isNotBlank(mixinToken.getArguments())) { node.setArguments(mixinToken.getArguments()); } List<String> args = node.getArguments(); String rest; if (args.size() > 0) { Matcher matcher = Pattern.compile("^\\.\\.\\.").matcher(args.get(args.size() - 1).trim()); if (matcher.find(0)) { rest = args.remove(args.size() - 1).trim().replaceAll("^\\.\\.\\.", ""); node.setRest(rest); } } if (peek() instanceof Indent) { this.inMixin++; node.setBlock(block()); node.setCall(false); this.mixins.put(mixinToken.getValue(),node); this.inMixin--; return node; }else{ node.setCall(true); 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 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(); }
BlockNode blockNode; if (peek() instanceof Indent) { blockNode = block(); } else { blockNode = new BlockNode();
main.setBlock(block()); conditions.add(main); ElseIf token = (ElseIf) expect(ElseIf.class); IfConditionNode elseIf = new IfConditionNode(token.getValue(), token.getLineNumber()); elseIf.setBlock(block()); conditions.add(elseIf); IfConditionNode elseNode = new IfConditionNode(null, token.getLineNumber()); elseNode.setDefault(true); elseNode.setBlock(block()); conditions.add(elseNode);
private Node parseEach() { Token token = expect(Each.class); Each eachToken = (Each) token; EachNode node = new EachNode(); node.setValue(eachToken.getValue()); node.setKey(eachToken.getKey()); node.setCode(eachToken.getCode()); node.setLineNumber(eachToken.getLineNumber()); node.setFileName(filename); node.setBlock(block()); if (peek() instanceof Else) { advance(); node.setElseNode(block()); } 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; }
ast.setFileName(path); if (peek() instanceof Indent && ast != null) { ((BlockNode) ast).getIncludeBlock().push(block());
private Node parseASTFilter() { Token token = expect(Filter.class); Filter filterToken = (Filter) token; AttributeList attr = (AttributeList) accept(AttributeList.class); token = expect(Colon.class); FilterNode node = new FilterNode(); node.setValue(filterToken.getValue()); node.setBlock(block()); node.setLineNumber(line()); node.setFileName(filename); node.setAttributes(convertToNodeAttributes(attr)); return node; }
private Node parseCode() { Token token = expect(Expression.class); Expression expressionToken = (Expression) token; ExpressionNode codeNode = new ExpressionNode(); codeNode.setValue(expressionToken.getValue()); codeNode.setBuffer(expressionToken.isBuffer()); codeNode.setEscape(expressionToken.isEscape()); codeNode.setLineNumber(expressionToken.getLineNumber()); codeNode.setFileName(filename); boolean block = false; // int i = 1; // while (lookahead(i) != null && lookahead(i) instanceof Newline) // ++i; block = peek() instanceof Indent; if (block) { codeNode.setBlock((BlockNode) block()); } return codeNode; }
tagNode.setBlock(block); }else if(peek() instanceof Indent){ BlockNode block = block();
private Node parseMixin() { Mixin mixinToken = (Mixin) expect(Mixin.class); MixinNode node = new MixinNode(); node.setName(mixinToken.getValue()); node.setLineNumber(mixinToken.getLineNumber()); node.setFileName(filename); if (StringUtils.isNotBlank(mixinToken.getArguments())) { node.setArguments(mixinToken.getArguments()); } List<String> args = node.getArguments(); String rest; if (args.size() > 0) { Matcher matcher = Pattern.compile("^\\.\\.\\.").matcher(args.get(args.size() - 1).trim()); if (matcher.find(0)) { rest = args.remove(args.size() - 1).trim().replaceAll("^\\.\\.\\.", ""); node.setRest(rest); } } if (peek() instanceof Indent) { this.inMixin++; node.setBlock(block()); node.setCall(false); this.mixins.put(mixinToken.getValue(),node); this.inMixin--; return node; }else{ node.setCall(true); 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 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(); }
main.setBlock(block()); conditions.add(main); ElseIf token = (ElseIf) expect(ElseIf.class); IfConditionNode elseIf = new IfConditionNode(token.getValue(), token.getLineNumber()); elseIf.setBlock(block()); conditions.add(elseIf); IfConditionNode elseNode = new IfConditionNode(null, token.getLineNumber()); elseNode.setDefault(true); elseNode.setBlock(block()); conditions.add(elseNode);
private Node parseEach() { Token token = expect(Each.class); Each eachToken = (Each) token; EachNode node = new EachNode(); node.setValue(eachToken.getValue()); node.setKey(eachToken.getKey()); node.setCode(eachToken.getCode()); node.setLineNumber(eachToken.getLineNumber()); node.setFileName(filename); node.setBlock(block()); if (peek() instanceof Else) { advance(); node.setElseNode(block()); } 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; }
ast.setFileName(path); if (peek() instanceof Indent && ast != null) { ((BlockNode) ast).getIncludeBlock().push(block());
private Node parseASTFilter() { Token token = expect(Filter.class); Filter filterToken = (Filter) token; AttributeList attr = (AttributeList) accept(AttributeList.class); token = expect(Colon.class); FilterNode node = new FilterNode(); node.setValue(filterToken.getValue()); node.setBlock(block()); node.setLineNumber(line()); node.setFileName(filename); node.setAttributes(convertToNodeAttributes(attr)); return node; }
private Node parseCode() { Token token = expect(Expression.class); Expression expressionToken = (Expression) token; ExpressionNode codeNode = new ExpressionNode(); codeNode.setValue(expressionToken.getValue()); codeNode.setBuffer(expressionToken.isBuffer()); codeNode.setEscape(expressionToken.isEscape()); codeNode.setLineNumber(expressionToken.getLineNumber()); codeNode.setFileName(filename); boolean block = false; // int i = 1; // while (lookahead(i) != null && lookahead(i) instanceof Newline) // ++i; block = peek() instanceof Indent; if (block) { codeNode.setBlock((BlockNode) block()); } return codeNode; }