Sha256: c1ee070a7797c07efe18f529c2183a6ece73ed39c16610b94f1599665740f677

Contents?: true

Size: 1.19 KB

Versions: 35

Compression:

Stored size: 1.19 KB

Contents

module Guard
  module Internals
    class Queue
      def initialize(commander)
        @commander = commander
        @queue = ::Queue.new
      end

      # Process the change queue, running tasks within the main Guard thread
      def process
        actions = []
        changes = { modified: [], added: [], removed: [] }

        while pending?
          if (item = @queue.pop).first.is_a?(Symbol)
            actions << item
          else
            item.each { |key, value| changes[key] += value }
          end
        end

        _run_actions(actions)
        return if changes.values.all?(&:empty?)
        Runner.new.run_on_changes(*changes.values)
      end

      def pending?
        !@queue.empty?
      end

      def <<(changes)
        @queue << changes
      end

      private

      def _run_actions(actions)
        actions.each do |action_args|
          args = action_args.dup
          namespaced_action = args.shift
          action = namespaced_action.to_s.sub(/^guard_/, "")
          if @commander.respond_to?(action)
            @commander.send(action, *args)
          else
            fail "Unknown action: #{action.inspect}"
          end
        end
      end
    end
  end
end

Version data entries

35 entries across 35 versions & 8 rubygems

Version Path
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/guard-2.15.0/lib/guard/internals/queue.rb
guard-2.16.1 lib/guard/internals/queue.rb
guard-2.16.0 lib/guard/internals/queue.rb
guard-2.15.1 lib/guard/internals/queue.rb
alimentos-alu0100945645-0.1.0 vendor/bundle/ruby/2.3.0/gems/guard-2.15.0/lib/guard/internals/queue.rb
alimentos-alu0100945645-1.0.0 vendor/bundle/ruby/2.3.0/gems/guard-2.15.0/lib/guard/internals/queue.rb
guard-2.15.0 lib/guard/internals/queue.rb
guard-2.14.2 lib/guard/internals/queue.rb
comiditaULL-0.1.1 vendor/bundle/ruby/2.3.0/gems/guard-2.14.1/lib/guard/internals/queue.rb
comidita_ull-0.1.1 vendor/bundle/ruby/2.3.0/gems/guard-2.14.1/lib/guard/internals/queue.rb
comidita_ull-0.1.0 vendor/bundle/ruby/2.3.0/gems/guard-2.14.1/lib/guard/internals/queue.rb
guard-2.14.1 lib/guard/internals/queue.rb
gameboard-3.1.0 vendor/bundle/ruby/2.3.0/gems/guard-2.14.0/lib/guard/internals/queue.rb
gameboard-3.0.0 vendor/bundle/ruby/2.3.0/gems/guard-2.14.0/lib/guard/internals/queue.rb
guard-2.14.0 lib/guard/internals/queue.rb