Sha256: bc677bbef1157ae5e90ce41c98b592312ef26112224e0cffcebcd8b825059d72

Contents?: true

Size: 850 Bytes

Versions: 3

Compression:

Stored size: 850 Bytes

Contents

require "mengpaneel/delayer"

module Mengpaneel
  class Replayer
    attr_reader :manager

    def initialize(manager)
      @manager = manager
    end

    def run
      return unless manager.controller
      
      delayed_calls = Delayer.new(manager.controller).load!

      Manager::MODES.each do |mode|
        next unless delayed_calls.has_key?(mode)

        calls = delayed_calls[mode] || []

        manager.send(mode) do
          replay_calls(calls)
        end
      end
    end

    private
      def replay_calls(calls)
        proxy = manager.call_proxy

        calls.each do |method_names, args|
          method_name = method_names.pop

          object = method_names.inject(proxy) { |object, method_name| object.public_send(method_name) }
          
          object.public_send(method_name, *args)
        end
      end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mengpaneel-0.0.3 lib/mengpaneel/replayer.rb
mengpaneel-0.0.2 lib/mengpaneel/replayer.rb
mengpaneel-0.0.1 lib/mengpaneel/replayer.rb