Sha256: d9f3adc195b5b3f54bbc03d8d389a04e4595b2dbaf1edd656701abd0caea4798

Contents?: true

Size: 1019 Bytes

Versions: 10

Compression:

Stored size: 1019 Bytes

Contents

class Spontaneous::Site
  module Hooks
    extend Spontaneous::Concern

    HOOKS = [:after_publish]

    module ClassMethods
      HOOKS.each do |hook|
        # def after_publish(&block)
        #   instance.after_publish(&block)
        # end
        class_eval(<<-RB)
          def #{hook}(&block)
            instance.#{hook}(&block)
          end
        RB
      end

      def trigger(event_name, *args)
        instance.trigger(event_name, *args)
      end
    end

    HOOKS.each do |hook|
      # def after_publish(&block)
      #   add_trigger(:after_publish, block)
      # end
      class_eval(<<-RB)
        def #{hook}(&block)
          add_trigger(:#{hook}, block)
        end
      RB
    end

    def triggers
      @triggers ||= Hash.new { |hash, key| hash[key] = [] }
    end

    def add_trigger(trigger_name, block)
      triggers[trigger_name] << block
    end

    def trigger(event_name, *args)
      triggers[event_name].each do |block|
        block.call(*args)
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
spontaneous-0.2.0.beta10 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta9 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta8 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta7 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta6 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta5 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta4 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta3 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta2 lib/spontaneous/site/hooks.rb
spontaneous-0.2.0.beta1 lib/spontaneous/site/hooks.rb