package ca.uhn.fhir.narrative.template.tags;
import java.util.Map;
import ca.uhn.fhir.narrative.template.nodes.FilterNode;
import ca.uhn.fhir.narrative.template.nodes.LNode;
class Assign extends Tag {
/*
* Assigns some value to a variable
*/
@Override
public Object render(Map<String, Object> context, LNode... nodes) {
String id = String.valueOf(nodes[0].render(context));
FilterNode filter = null;
LNode expression;
if(nodes.length >= 3) {
filter = (FilterNode)nodes[1];
expression = nodes[2];
}
else {
expression = nodes[1];
}
Object value = expression.render(context);
if(filter != null) {
value = filter.apply(value, context);
}
context.put(id, value);
return "";
}
}