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.rb37
1 files changed, 37 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..3c605c3ee3
--- /dev/null
+++ b/actionview/lib/action_view/context.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+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 Action Controller, 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.
+ 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.
+ def _layout_for(name = nil)
+ name ||= :layout
+ view_flow.get(name).html_safe
+ end
+ end
+end