package ca.uhn.fhir.narrative.template.tags; import ca.uhn.fhir.narrative.template.Template; import java.io.File; import java.util.Map; import ca.uhn.fhir.narrative.template.nodes.LNode; public class Include extends Tag { public static final String INCLUDES_DIRECTORY_KEY = "liqp@includes_directory"; public static String DEFAULT_EXTENSION = ".liquid"; @Override public Object render(Map<String, Object> context, LNode... nodes) { // This value will always be defined: either a custom file set by the // user, or else inside TagNode. File includesDirectory = (File)context.get(INCLUDES_DIRECTORY_KEY); try { String includeResource = super.asString(nodes[0].render(context)); String extension = DEFAULT_EXTENSION; if(includeResource.indexOf('.') > 0) { extension = ""; } File includeResourceFile = new File(includesDirectory, includeResource + extension); Template include = Template.parse(includeResourceFile); // check if there's a optional "with expression" if(nodes.length > 1) { Object value = nodes[1].render(context); context.put(includeResource, value); } return include.render(context); } catch(Exception e) { return ""; } } }