Sha256: 45c3ee775c422a04c12f1eb0b5e30bdc5e9031552a597f63f28635d67fccd1f9

Contents?: true

Size: 979 Bytes

Versions: 2

Compression:

Stored size: 979 Bytes

Contents

module RShade
  class EventObserver
    attr_reader :event_processor, :config

    # @param [RShade::Config::Store] config
    # @param [RShade::EventProcessor] event_store
    def initialize(config, event_processor)
      @event_processor = event_processor
      @config = config
      @level = 0
      @hook = Hash.new(0)
      @hook[:enter] = 1
      @hook[:leave] = -1
    end

    # @param [:enter, :leave, :other] type
    # @param [RShade::Event] event
    def call(event, type)
      @level += @hook[type]
      return unless pass?(event)

      enter(event) if type == :enter
      leave(event) if type == :leave
      other(event) if type == :other
    end

    private

    def enter(event)
      event_processor.enter event, @level
    end

    def leave(event)
      event_processor.leave event, @level
    end

    def other(event)
      event_processor.other event, @level
    end

    def pass?(event)
      config.filter_composition.call(event)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rshade-0.1.9.1 lib/rshade/event_observer.rb
rshade-0.1.9 lib/rshade/event_observer.rb