class Yaks::Runner

Public Instance Methods

call() click to toggle source
# File lib/yaks/runner.rb, line 12
def call
  Pipeline.new(steps).insert_hooks(hooks).call(object, env)
end
context() click to toggle source
# File lib/yaks/runner.rb, line 28
def context
  {
    policy: policy,
    env: env,
    mapper_stack: []
  }.merge(slice_hash(options, :item_mapper))
end
env() click to toggle source
# File lib/yaks/runner.rb, line 37
def env
  options.fetch(:env, {})
end
format() click to toggle source
# File lib/yaks/runner.rb, line 20
def format
  Pipeline.new([[:format, formatter], [:primitivize, primitivizer]]).insert_hooks(hooks).call(object, env)
end
format_class() click to toggle source

@return [Class]

# File lib/yaks/runner.rb, line 43
def format_class
  Format.by_accept_header(env['HTTP_ACCEPT']) {
    Format.by_name(options.fetch(:format) { default_format })
  }
end
formatter() click to toggle source
# File lib/yaks/runner.rb, line 65
def formatter
  format_class.new(format_options_hash[format_name])
end
hooks() click to toggle source
# File lib/yaks/runner.rb, line 86
def hooks
  config.hooks + options.fetch(:hooks, [])
end
map() click to toggle source
# File lib/yaks/runner.rb, line 24
def map
  Pipeline.new([[:map, mapper]]).insert_hooks(hooks).call(object, env)
end
mapper() click to toggle source
# File lib/yaks/runner.rb, line 58
def mapper
  options.fetch(:mapper) do
    policy.derive_mapper_from_object(object)
  end.new(context)
end
primitivizer() click to toggle source
# File lib/yaks/runner.rb, line 70
def primitivizer
  proc do |input|
    if format_class.serializer.equal? :json
      primitivize.call(input)
    else
      input
    end
  end
end
read() click to toggle source
# File lib/yaks/runner.rb, line 16
def read
  Pipeline.new([[:parse, serializer.inverse], [:read, formatter.inverse]]).insert_hooks(hooks).call(object, env)
end
serializer() click to toggle source
# File lib/yaks/runner.rb, line 81
def serializer
  serializers.fetch(format_class.serializer)
end
steps() click to toggle source
# File lib/yaks/runner.rb, line 50
def steps
  [[ :map, mapper ],
   [ :format, formatter ],
   [ :primitivize, primitivizer],
   [ :serialize, serializer ]]
end