aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/context.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionview/lib/action_view/context.rb')
-rw-r--r--actionview/lib/action_view/context.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/actionview/lib/action_view/context.rb b/actionview/lib/action_view/context.rb
new file mode 100644
index 0000000000..ee263df484
--- /dev/null
+++ b/actionview/lib/action_view/context.rb
@@ -0,0 +1,36 @@
+module ActionView
+ module CompiledTemplates #:nodoc:
+ # holds compiled template code
+ end
+
+ # = Action View Context
+ #
+ # Action View contexts are supplied to Action Controller to render a template.
+ # The default Action View context is ActionView::Base.
+ #
+ # In order to work with ActionController, a Context must just include this module.
+ # The initialization of the variables used by the context (@output_buffer, @view_flow,
+ # and @virtual_path) is responsibility of the object that includes this module
+ # (although you can call _prepare_context defined below).
+ module Context
+ include CompiledTemplates
+ attr_accessor :output_buffer, :view_flow
+
+ # Prepares the context by setting the appropriate instance variables.
+ # :api: plugin
+ def _prepare_context
+ @view_flow = OutputFlow.new
+ @output_buffer = nil
+ @virtual_path = nil
+ end
+
+ # Encapsulates the interaction with the view flow so it
+ # returns the correct buffer on +yield+. This is usually
+ # overwritten by helpers to add more behavior.
+ # :api: plugin
+ def _layout_for(name=nil)
+ name ||= :layout
+ view_flow.get(name).html_safe
+ end
+ end
+end