Sha256: 27b33234403b2de277175a1671db6d2e32010b4917c064f6355429367cbb1b62

Contents?: true

Size: 898 Bytes

Versions: 9

Compression:

Stored size: 898 Bytes

Contents

module Protobuf
  class Lifecycle

    def self.register( event_name, &blk )
      raise "Lifecycle register must have a block" unless block_given?
      event_name = normalized_event_name( event_name )

      lifecycle_events[ event_name ] ||= []
      lifecycle_events[ event_name ] << blk
    end

    def self.trigger( event_name, *args )
      event_name = normalized_event_name( event_name )

      if lifecycle_events.has_key?( event_name )
        lifecycle_events[ event_name ].each do |block|
          if ! args.empty? && block.arity != 0
            block.call(*args)
          else
            block.call
          end
        end
      end
    end

    def self.normalized_event_name( event_name )
      return "#{event_name}".downcase
    end

    class << self
      attr_accessor :lifecycle_events

      alias_method :on, :register
    end

    @lifecycle_events ||= {}
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
protobuf-2.8.8 lib/protobuf/lifecycle.rb
protobuf-2.8.7 lib/protobuf/lifecycle.rb
protobuf-2.8.6 lib/protobuf/lifecycle.rb
protobuf-2.8.5 lib/protobuf/lifecycle.rb
protobuf-2.8.4 lib/protobuf/lifecycle.rb
protobuf-2.8.3 lib/protobuf/lifecycle.rb
protobuf-2.8.2 lib/protobuf/lifecycle.rb
protobuf-2.8.1 lib/protobuf/lifecycle.rb
protobuf-2.8.0 lib/protobuf/lifecycle.rb