package org.jtwig.render.node.renderer; import org.jtwig.model.tree.BlockNode; import org.jtwig.render.RenderRequest; import org.jtwig.render.context.model.BlockContext; import org.jtwig.render.context.model.BlockDefinition; import org.jtwig.render.node.RenderNodeService; import org.jtwig.renderable.Renderable; import org.jtwig.resource.reference.ResourceReference; public class BlockNodeRender implements NodeRender<BlockNode> { @Override public Renderable render(RenderRequest renderRequest, BlockNode node) { String identifier = node.getIdentifier(); ResourceReference current = renderRequest.getRenderContext().getCurrent(ResourceReference.class); renderRequest.getRenderContext().getCurrent(BlockContext.class).add(node, current); BlockDefinition definition = renderRequest.getRenderContext().getCurrent(BlockContext.class).get(identifier).get(); RenderNodeService renderNodeService = renderRequest.getEnvironment().getRenderEnvironment().getRenderNodeService(); renderRequest.getRenderContext().start(ResourceReference.class, definition.getSource()); Renderable render = renderNodeService.render(renderRequest, definition.getNode()); renderRequest.getRenderContext().end(ResourceReference.class); return render; } }