Sha256: dce1dc6c7f21fbca9732cb9ecfcbc31994c7e3bee7724b747c8bb3944f870168

Contents?: true

Size: 1.46 KB

Versions: 4

Compression:

Stored size: 1.46 KB

Contents

require 'active_support'
require 'active_support/concern'

require 'fortitude/tags/tags_module'

module Fortitude
  class Widget
    module ModulesAndSubclasses
      extend ActiveSupport::Concern

      module ClassMethods
        # INTERNAL USE ONLY
        def direct_subclasses
          @direct_subclasses || [ ]
        end
        private :direct_subclasses

        # INTERNAL USE ONLY -- RUBY CALLBACK
        def inherited(subclass)
          @direct_subclasses ||= [ ]
          @direct_subclasses |= [ subclass ]
        end

        # INTERNAL USE ONLY
        def create_modules!
          raise "We already seem to have created our modules" if @tags_module || @needs_module || @helpers_module
          @tags_module = Fortitude::Tags::TagsModule.new(self)
          @helpers_module = Module.new
          include @helpers_module
          @needs_module = Module.new
          include @needs_module
        end
        private :create_modules!

        # INTERNAL USE ONLY
        def tags_module
          create_modules! unless @tags_module
          @tags_module
        end
        private :tags_module

        # INTERNAL USE ONLY
        def needs_module
          create_modules! unless @needs_module
          @needs_module
        end
        private :needs_module

        # INTERNAL USE ONLY
        def helpers_module
          create_modules! unless @helpers_module
          @helpers_module
        end
        private :helpers_module
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fortitude-0.0.4-java lib/fortitude/widget/modules_and_subclasses.rb
fortitude-0.0.4 lib/fortitude/widget/modules_and_subclasses.rb
fortitude-0.0.3 lib/fortitude/widget/modules_and_subclasses.rb
fortitude-0.0.2 lib/fortitude/widget/modules_and_subclasses.rb