def apply
h.applied_workitem['fields'].delete('__result__')
filter =
referenced_filter || complete_filter || one_line_filter || block_filter
record = filter.first.delete('record') rescue nil
flush = filter.first.delete('flush') rescue nil
record = '__validation_errors__' if record == true
opts = {
:double_tilde => parent_id ?
(parent.h.applied_workitem['fields'] rescue nil) : nil,
:no_raise => record
}
fields = Ruote.filter(filter, h.applied_workitem['fields'], opts)
if record and fields.is_a?(Array)
(flush ?
h.applied_workitem['fields'][record] = [] :
h.applied_workitem['fields'][record] ||= []
).concat(fields)
reply_to_parent(h.applied_workitem)
else
reply_to_parent(h.applied_workitem.merge('fields' => fields))
end
end