Sha256: 44168bcc2e867842d2764327d18c18b1763238c362d6d4999fdcce699516fa16

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

# encoding: UTF-8


module Spontaneous::Plugins::Site
  module Helpers
    extend ActiveSupport::Concern

    module ClassMethods
      def helper(*formats, &block)
        helper_module = Module.new(&block)
        register_helper(helper_module, *formats.flatten)
        helper_module
      end

      # Private: Generates a module including all helper methods for the requested format(s)
      def context(*formats)
        formats = [:*].concat formats.flatten.map { |f| f.to_sym }
        helper_module = Module.new
        formats.each do |format|
          Spontaneous::Output::Helpers.registered_helpers[format].each do |mod|
            helper_module.send :include, mod
            helper_module.send :extend,  mod
          end
          Spontaneous::Site.registered_helpers[format].each do |mod|
            helper_module.send :include, mod
            helper_module.send :extend,  mod
          end
        end
        helper_module
      end

      def register_helper(helper_module, *formats)
        site = instance
        if formats.empty?
          site.registered_helpers[:*] << helper_module
        else
          formats.each do |format|
            site.registered_helpers[format.to_sym] << helper_module
          end
        end
      end

      def registered_helpers
        instance.registered_helpers
      end
    end

    def registered_helpers
      @registered_helpers ||= Hash.new { |hash, key| hash[key] = [] }
    end
  end # Helpers
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spontaneous-0.2.0.alpha7 lib/spontaneous/plugins/site/helpers.rb
spontaneous-0.2.0.alpha6 lib/spontaneous/plugins/site/helpers.rb
spontaneous-0.2.0.alpha5 lib/spontaneous/plugins/site/helpers.rb
spontaneous-0.2.0.alpha4 lib/spontaneous/plugins/site/helpers.rb
spontaneous-0.2.0.alpha3 lib/spontaneous/plugins/site/helpers.rb