Sha256: f7cee41d10b7c71ceff12a94ac032ef38d187a2b6a43a8c136068a1a40e68a51

Contents?: true

Size: 1.19 KB

Versions: 17

Compression:

Stored size: 1.19 KB

Contents

module Pancake
  module Mixins
    module StackHelper
      def self.included(base)
        base.class_inheritable_accessor :_stack_class
        base.extend ClassMethods
        base.class_eval do
          include ::Pancake::Mixins::StackHelper::InstanceMethods
        end
        base.stack_class
      end

      module ClassMethods
        def stack_class
          return @_stack_class if @_stack_class
          klass = nil
          if name =~ /^\#<Class/
            raise "Could not determine the stack.  Make sure you declare global classes with a preceeding ::"
          end
          ns = name.split("::")
          until ns.empty? || klass
            r = Object.full_const_get(ns.join("::"))
            if r.ancestors.include?(::Pancake::Stack)
              klass = r
            else
              ns.pop
            end
          end
          if klass.nil?
            raise "#{name} is not from a stack" unless _stack_class
          else
            self._stack_class = r
          end
          _stack_class
        end
      end

      module InstanceMethods
        def stack_class
          self.class.stack_class
        end
      end

    end # StackHelper
  end # Mixins
end # Pancake

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
pancake-0.1.29 lib/pancake/mixins/stack_helper.rb
pancake-0.1.28 lib/pancake/mixins/stack_helper.rb
pancake-0.1.27 lib/pancake/mixins/stack_helper.rb
pancake-0.1.26 lib/pancake/mixins/stack_helper.rb
pancake-0.1.25 lib/pancake/mixins/stack_helper.rb
pancake-0.1.24 lib/pancake/mixins/stack_helper.rb
pancake-0.1.22 lib/pancake/mixins/stack_helper.rb
pancake-0.1.20 lib/pancake/mixins/stack_helper.rb
pancake-0.1.19 lib/pancake/mixins/stack_helper.rb
pancake-0.1.18 lib/pancake/mixins/stack_helper.rb
pancake-0.1.17 lib/pancake/mixins/stack_helper.rb
pancake-0.1.16 lib/pancake/mixins/stack_helper.rb
pancake-0.1.15 lib/pancake/mixins/stack_helper.rb
pancake-0.1.13 lib/pancake/mixins/stack_helper.rb
pancake-0.1.12 lib/pancake/mixins/stack_helper.rb
pancake-0.1.10 lib/pancake/mixins/stack_helper.rb
pancake-0.1.8 lib/pancake/mixins/stack_helper.rb