Sha256: 84a17731620d16e0f933c012a80c829827249cd627fa0f3164bec11fb708289f

Contents?: true

Size: 804 Bytes

Versions: 4

Compression:

Stored size: 804 Bytes

Contents

module Cfer::Core
  # Provides support for hooking into resource types, and evaluating code before or after properties are set
  module Hooks
    def pre_block
      self.class.pre_hooks.each do |hook|
        instance_eval &hook
      end
    end

    def post_block
      self.class.post_hooks.each do |hook|
        instance_eval &hook
      end
    end

    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods
      def before(&block)
        self.pre_hooks << block
      end

      def after(&block)
        self.post_hooks << block
      end

      def pre_hooks
        @pre_hooks ||= []
      end

      def post_hooks
        @post_hooks ||= []
      end

      def inherited(subclass)
        subclass.include Cfer::Core::Hooks
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cfer-0.5.0.pre.rc4 lib/cfer/core/hooks.rb
cfer-0.5.0.pre.rc3 lib/cfer/core/hooks.rb
cfer-0.5.0.pre.rc2 lib/cfer/core/hooks.rb
cfer-0.5.0.pre.rc1 lib/cfer/core/hooks.rb