Sha256: 7c04ca41d5518f6451426e0f5fa343f5e530d8849a3e13e58d4fd32f90904831

Contents?: true

Size: 973 Bytes

Versions: 3

Compression:

Stored size: 973 Bytes

Contents

module Controll::Flow
  module EventMapper
    class PathFinder
      attr_accessor :event, :maps, :types

      NoMappingFoundError = Controll::Flow::NoMappingFoundError

      # event <Event>
      def initialize event, maps, types = []
        raise ArgumentError, "Event argument must not be empty" if event.blank?
        raise ArgumentError, "Maps argument must not be empty" if maps.blank?
        @event = normalize event
        @types = types unless types.blank?
        @maps = maps
      end

      def path
        @path ||= mapper.map_event 
      rescue StandardError => e
        raise NoMappingFoundError, "No event mapping could be found for: #{event.inspect} in: #{maps}. Cause: #{e}"
      end

      protected

      include Controll::Event::Helper

      def event_map
        @event_map ||= maps[event.type] || {}
      end

      def mapper
        @mapper ||= Controll::Flow::EventMapper::Util.new event, event_map
      end      
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
controll-0.3.2 lib/controll/flow/event_mapper/path_finder.rb
controll-0.3.1 lib/controll/flow/event_mapper/path_finder.rb
controll-0.3.0 lib/controll/flow/event_mapper/path_finder.rb