Module: MotionKit::BaseLayoutClassMethods
- Included in:
- BaseLayout
- Defined in:
- lib/motion-kit/helpers/base_layout_class_methods.rb
Instance Method Summary collapse
-
#layout_for(klass) ⇒ Object
Instantiates a new Layout instance using ‘layout` as the root-level layout.
-
#memoize(klass) ⇒ Object
Cache registered classes.
- #target_klasses ⇒ Object
- #targets(klass = nil) ⇒ Object
Instance Method Details
#layout_for(klass) ⇒ Object
Instantiates a new Layout instance using ‘layout` as the root-level layout
25 26 27 28 |
# 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) ⇒ Object
Cache registered classes
31 32 33 34 35 36 37 38 39 40 41 |
# 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 ⇒ Object
4 5 6 7 8 |
# 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) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 |
# 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 |