def reply_to_parent(workitem)
h.applied_workitem['fields'] = workitem['fields']
opts = { :escape => attribute(:escape) }
compiled_atts = compile_atts(opts)
kv = find_kv(compiled_atts)
over = attribute(:override) || attribute(:over)
unset = name == 'unset'
h.variables = nil
value = if tree_children.empty?
lookup_val(opts)
else
h.applied_workitem['fields']['__result__']
end
result = if var_key = has_attribute(:v, :var, :variable)
set_v(attribute(var_key), value, :unset => unset, :override => over)
elsif field_key = has_attribute(:f, :fld, :field)
set_f(attribute(field_key), value, :unset => unset)
elsif value == nil && kv
kv << { :unset => unset, :override => over }
set_vf(*kv)
elsif kv
set_vf(kv.first, value, :unset => unset, :override => over)
else
raise ArgumentError.new(
"missing a variable or field target in #{tree.inspect}")
end
h.applied_workitem['fields']['__result__'] = result
super(h.applied_workitem)
end