All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mitchellbosecke.pebble.node.expression.ParentFunctionExpression Maven / Gradle / Ivy

/*******************************************************************************
 * This file is part of Pebble.
 * 

* Copyright (c) 2014 by Mitchell Bösecke *

* For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. ******************************************************************************/ package com.mitchellbosecke.pebble.node.expression; import com.mitchellbosecke.pebble.error.PebbleException; import com.mitchellbosecke.pebble.extension.NodeVisitor; import com.mitchellbosecke.pebble.template.EvaluationContext; import com.mitchellbosecke.pebble.template.Hierarchy; import com.mitchellbosecke.pebble.template.PebbleTemplateImpl; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; public class ParentFunctionExpression implements Expression { private final String blockName; private final int lineNumber; public ParentFunctionExpression(String blockName, int lineNumber) { this.blockName = blockName; this.lineNumber = lineNumber; } @Override public String evaluate(PebbleTemplateImpl self, EvaluationContext context) throws PebbleException { Writer writer = new StringWriter(); try { Hierarchy hierarchy = context.getHierarchy(); if (hierarchy.getParent() == null) { throw new PebbleException(null, "Can not use parent function if template does not extend another template.", lineNumber, self.getName()); } PebbleTemplateImpl parent = hierarchy.getParent(); hierarchy.ascend(); parent.block(writer, context, blockName, true); hierarchy.descend(); } catch (IOException e) { throw new PebbleException(e, "Could not render block [" + blockName + "]", this.getLineNumber(), self.getName()); } return writer.toString(); } @Override public void accept(NodeVisitor visitor) { visitor.visit(this); } @Override public int getLineNumber() { return this.lineNumber; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy