Sha256: 739eead6dc9b5490174cb575639628be3242b3564e14373ac0c80864f0908a63

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

module Tap
  module Generator
    module Helpers
      attr_reader :helper_registry
    
      def helpers
        return @helpers if @helpers
      
        helpers = []
        ancestors.each do |ancestor|
          next unless ancestor.kind_of?(Helpers)
          helpers.concat ancestor.helper_registry
        end
      
        helpers
      end
    
      def cache_helpers(on=true)
        @helpers = nil
        @helpers = self.helpers if on
      end
    
      protected
    
      def helper(const_name='helper', &block)
        helper = Module.new(&block)
        const_set(const_name.to_s.camelize, helper) if const_name
        helper_registry << helper
        helper
      end
    
      private
    
      def self.initialize(base)
        base.instance_variable_set(:@helper_registry, [])
        base.instance_variable_set(:@helpers, nil)
      end
    
      def self.extended(base)
        Helpers.initialize(base)
      end
    
      def inherited(base)
        super
        Helpers.initialize(base)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tap-gen-0.8.0 lib/tap/generator/helpers.rb
tap-gen-0.7.1 lib/tap/generator/helpers.rb
tap-gen-0.7.0 lib/tap/generator/helpers.rb