package ca.uhn.fhir.narrative.template.nodes;
import java.io.File;
import java.util.Map;
import ca.uhn.fhir.narrative.template.parser.Flavor;
import ca.uhn.fhir.narrative.template.tags.Include;
import ca.uhn.fhir.narrative.template.tags.Tag;
class TagNode implements LNode {
private Tag tag;
private LNode[] tokens;
private Flavor flavor;
public TagNode(String tagName, Tag tag, LNode... tokens) {
this(tagName, tag, Flavor.LIQUID, tokens);
}
public TagNode(String tagName, Tag tag, Flavor flavor, LNode... tokens) {
if (tag == null) {
throw new IllegalArgumentException("no tag available named: " + tagName);
}
this.tag = tag;
this.tokens = tokens;
this.flavor = flavor;
}
@Override
public Object render(Map<String, Object> context) {
// Check if the INCLUDES_DIRECTORY_KEY has already been set, and if not,
// set it based on the value in the flavor.
if (!context.containsKey(Include.INCLUDES_DIRECTORY_KEY)) {
context.put(Include.INCLUDES_DIRECTORY_KEY, new File(flavor.snippetsFolderName));
}
return tag.render(context, tokens);
}
}