void accept(Environment env) throws TemplateException {
TemplateModel tm = value.getAsTemplateModel(env);
Environment.Namespace namespace = null;
if (namespaceExp != null) {
boolean oops = false;
try {
namespace = (Environment.Namespace) namespaceExp.getAsTemplateModel(env);
} catch (ClassCastException cce) {
oops = true;
}
if (oops || namespace==null) {
throw new InvalidReferenceException(getStartLocation() + "\nInvalid reference to namespace: " + namespaceExp, env);
}
}
if (tm == null) {
if (env.isClassicCompatible()) {
tm = TemplateScalarModel.EMPTY_STRING;
}
else {
String msg = "Error " + getStartLocation()
+"\n" + value + " is undefined."
+"\nIt cannot be assigned to " + variableName;
throw new InvalidReferenceException(msg, env);
}
}
if (scope == LOCAL) {
env.setLocalVariable(variableName, tm);
}
else {
if (namespace == null) {
if (scope == GLOBAL) {
namespace = env.getGlobalNamespace();
}
else if (scope == NAMESPACE) {
namespace = env.getCurrentNamespace();
}
}
namespace.put(variableName, tm);
}
}
|