lib/yaks/runner.rb in yaks-0.7.7 vs lib/yaks/runner.rb in yaks-0.8.0.alpha

- old
+ new

@@ -3,22 +3,24 @@ include Util include Anima.new(:object, :config, :options) include Adamantium::Flat extend Forwardable - def_delegators :config, :policy, :default_format, :format_options, :primitivize, :serializers + def_delegators :config, :policy, :default_format, :format_options_hash, + :primitivize, :serializers + def_delegators :format_class, :media_type, :format_name def call - process(steps, object) + Pipeline.new(steps).insert_hooks(hooks).call(object, env) end - def map(object) - process(insert_hooks([[:map, mapper]]), object) + def read + Pipeline.new([[:parse, serializer.inverse], [:format, formatter.inverse]]).insert_hooks(hooks).call(object, env) end - def process(operations, input) - operations.inject(input) {|memo, (_, step)| step.call(memo, env) } + def map + Pipeline.new([[:map, mapper]]).insert_hooks(hooks).call(object, env) end def context { policy: policy, @@ -39,24 +41,15 @@ Format.by_name(options.fetch(:format) { default_format }) } end memoize :format_class - def media_type - format_class.media_type - end - - def format_name - format_class.format_name - end - def steps - insert_hooks( - [[ :map, mapper ], - [ :format, formatter ], - [ :primitivize, primitivizer], - [ :serialize, serializer ]]) + [[ :map, mapper ], + [ :format, formatter ], + [ :primitivize, primitivizer], + [ :serialize, serializer ]] end memoize :steps def mapper options.fetch(:mapper) do @@ -64,11 +57,11 @@ end.new(context) end memoize :mapper, freezer: :noop def formatter - format_class.new(format_options[format_name]) + format_class.new(format_options_hash[format_name]) end memoize :formatter def primitivizer proc do |input| @@ -88,25 +81,7 @@ def hooks config.hooks + options.fetch(:hooks, []) end - def insert_hooks(steps) - hooks.inject(steps) do |steps, (type, target_step, name, hook)| - steps.flat_map do |step_name, callable| - if step_name.equal? target_step - case type - when :before - [[name, hook], [step_name, callable]] - when :after - [[step_name, callable], [name, hook]] - when :around - [[step_name, ->(x, env) { hook.call(x, env, &callable) }]] - when :skip - [] - end - end || [[step_name, callable]] - end - end - end end end