module Knuckles::Stages::Enhancer
The enhancer modifies rendered data using proc passed through options. The enhancer stage is critical to customizing the final output. For example, if staff should have confidential data that regular users can't see you can enhance the final values. Another use of enhancers is personalizing an otherwise generic response.
Public Instance Methods
call(prepared, options)
click to toggle source
Modify all results using an `enhancer` proc.
@param [Enumerable] prepared The prepared collection to be enhanced @option [Proc] :enhancer A `proc`, `lambda`, or any object that responds
to `call`. Every complete `result` in the prepared collection will be passed to the enhancer.
@example Removing tags unless the scope is staff
enhancer = lambda do |result, options| scope = options[:scope] unless scope.staff? result.delete_if { |key, _| key == "tags" } end result end prepared = [{result: {"posts" => [], "tags" => []}}] Knuckles::Stages::Enhancer.call(prepared, enhancer: enhancer) #=> # [{result: {"posts" => []}}]
# File lib/knuckles/stages/enhancer.rb, line 37 def call(prepared, options) enhancer = options[:enhancer] if enhancer prepared.each do |hash| hash[:result] = enhancer.call(hash[:result], options) end end prepared end