Class: Lotus::View::Rendering::LayoutScope
- Inherits:
- BasicObject
- Defined in:
- lib/lotus/view/rendering/layout_scope.rb
Overview
Scope for layout rendering
Direct Known Subclasses
Instance Method Summary collapse
-
#class ⇒ Object
Returns the classname as string.
-
#content(key) ⇒ String, NilClass
Returns a content for the given key, by trying to invoke on the current scope, a method with the same name.
-
#format ⇒ Symbol
Returns the requested format.
-
#initialize(layout, scope) ⇒ LayoutScope
constructor
private
Initialize the scope.
-
#inspect ⇒ String
Returns an inspect String.
-
#locals ⇒ Hash
The current locals.
-
#render(options) ⇒ String
Render a partial or a template within a layout template.
-
#respond_to?(m, include_all = false) ⇒ TrueClass, FalseClass
Implements “respond to” logic.
-
#respond_to_missing?(m, include_all) ⇒ TrueClass, FalseClass
private
Implements “respond to” logic.
-
#view ⇒ Lotus::View
The current view.
Constructor Details
#initialize(layout, scope) ⇒ LayoutScope
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initialize the scope
18 19 20 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 18 def initialize(layout, scope) @layout, @scope = layout, scope end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &blk) ⇒ Object (protected)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Forward all the missing methods to the view scope or to the layout.
205 206 207 208 209 210 211 212 213 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 205 def method_missing(m, *args, &blk) if @scope.respond_to?(m) @scope.__send__(m, *args, &blk) elsif layout.respond_to?(m) layout.__send__(m, *args, &blk) else ::Lotus::View::Escape.html(super) end end |
Instance Method Details
#class ⇒ Object
Returns the classname as string
27 28 29 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 27 def class (class << self; self end).superclass end |
#content(key) ⇒ String, NilClass
Returns a content for the given key, by trying to invoke on the current scope, a method with the same name.
The scope is made of locals and concrete methods from view and layout.
159 160 161 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 159 def content(key) __send__(key) if respond_to?(key) end |
#format ⇒ Symbol
Returns the requested format.
94 95 96 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 94 def format @scope.format end |
#inspect ⇒ String
Returns an inspect String
36 37 38 39 40 41 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 36 def inspect base = "#<#{ self.class }:#{'%x' % (self.object_id << 1)}" base << " @layout=\"#{@layout.inspect}\"" if @layout base << " @scope=\"#{@scope.inspect}\"" if @scope base << ">" end |
#locals ⇒ Hash
The current locals.
112 113 114 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 112 def locals @locals || @scope.locals end |
#render(options) ⇒ String
Render a partial or a template within a layout template.
85 86 87 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 85 def render() renderer().render end |
#respond_to?(m, include_all = false) ⇒ TrueClass, FalseClass
Implements “respond to” logic
170 171 172 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 170 def respond_to?(m, include_all = false) respond_to_missing?(m, include_all) end |
#respond_to_missing?(m, include_all) ⇒ TrueClass, FalseClass
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Implements “respond to” logic
182 183 184 185 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 182 def respond_to_missing?(m, include_all) @layout.respond_to?(m, include_all) || @scope.respond_to?(m, include_all) end |
#view ⇒ Lotus::View
The current view.
103 104 105 |
# File 'lib/lotus/view/rendering/layout_scope.rb', line 103 def view @view || @scope.view end |