module MotionKit::BaseLayoutClassMethods
Public Instance Methods
layout_for(klass)
click to toggle source
Instantiates a new Layout
instance using `layout` as the root-level layout
# File lib/motion-kit/helpers/base_layout_class_methods.rb, line 25 def layout_for(klass) memoized_klass = memoize(klass) memoized_klass && memoized_klass.new end
memoize(klass)
click to toggle source
Cache registered classes
# File lib/motion-kit/helpers/base_layout_class_methods.rb, line 31 def memoize(klass) @memoize ||= {} @memoize[klass] ||= begin while klass break if registered_class = target_klasses[klass] klass = klass.superclass end @memoize[klass] = registered_class if registered_class end @memoize[klass] end
target_klasses()
click to toggle source
# File lib/motion-kit/helpers/base_layout_class_methods.rb, line 4 def target_klasses # We don't want subclasses, just BaseLayout return BaseLayout.target_klasses unless self == BaseLayout @target_klasses ||= {} end
targets(klass=nil)
click to toggle source
# File lib/motion-kit/helpers/base_layout_class_methods.rb, line 10 def targets(klass=nil) return nil if klass.nil? && self == BaseLayout return @targets || superclass.targets if klass.nil? @targets = klass if BaseLayout.target_klasses.key?(klass) && BaseLayout.target_klasses[klass] != self NSLog('WARNING! The class “%@” was registered with the layout class “%@”', klass, BaseLayout.target_klasses[klass]) end BaseLayout.target_klasses[klass] = self nil end