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