Skip to content

Commit

Permalink
Introduce ActionView::InlineTemplate class
Browse files Browse the repository at this point in the history
  • Loading branch information
lifo committed Apr 19, 2008
1 parent 69a5c1d commit 534c6b2
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 18 deletions.
2 changes: 2 additions & 0 deletions actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*

* Introduce ActionView::InlineTemplate class. [Pratik]

* Automatically parse posted JSON content for Mime::JSON requests. [rick]

POST /posts
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_controller/base.rb
Expand Up @@ -870,7 +870,7 @@ def render(options = nil, extra_options = {}, &block) #:doc:

elsif inline = options[:inline]
add_variables_to_assigns
tmpl = ActionView::Template.new(@template, options[:inline], false, options[:locals], true, options[:type])
tmpl = ActionView::InlineTemplate.new(@template, options[:inline], options[:locals], options[:type])
render_for_text(@template.render_template(tmpl), options[:status])

elsif action_name = options[:action]
Expand Down
1 change: 1 addition & 0 deletions actionpack/lib/action_view.rb
Expand Up @@ -30,6 +30,7 @@
require 'action_view/template_finder'
require 'action_view/template'
require 'action_view/partial_template'
require 'action_view/inline_template'

require 'action_view/base'
require 'action_view/partials'
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_view/base.rb
Expand Up @@ -279,7 +279,7 @@ def render(options = {}, local_assigns = {}, &block) #:nodoc:
elsif options[:partial]
render_partial(options[:partial], ActionView::Base::ObjectWrapper.new(options[:object]), options[:locals])
elsif options[:inline]
template = Template.new(self, options[:inline], false, options[:locals], true, options[:type])
template = InlineTemplate.new(self, options[:inline], options[:locals], options[:type])
render_template(template)
end
end
Expand Down
20 changes: 20 additions & 0 deletions actionpack/lib/action_view/inline_template.rb
@@ -0,0 +1,20 @@
module ActionView #:nodoc:
class InlineTemplate < Template #:nodoc:

def initialize(view, source, locals = {}, type = nil)
@view = view
@finder = @view.finder

@source = source
@extension = type
@locals = locals || {}

@handler = self.class.handler_class_for_extension(@extension).new(@view)
end

def method_key
@source
end

end
end
22 changes: 9 additions & 13 deletions actionpack/lib/action_view/template.rb
Expand Up @@ -2,22 +2,18 @@ module ActionView #:nodoc:
class Template #:nodoc:

attr_accessor :locals
attr_reader :handler, :path, :source, :extension, :filename, :path_without_extension, :method
attr_reader :handler, :path, :extension, :filename, :path_without_extension, :method

def initialize(view, path_or_source, use_full_path, locals = {}, inline = false, inline_type = nil)
def initialize(view, path, use_full_path, locals = {})
@view = view
@finder = @view.finder

unless inline
# Clear the forward slash at the beginning if exists
@path = use_full_path ? path_or_source.sub(/^\//, '') : path_or_source
@view.first_render ||= @path
@source = nil # Don't read the source until we know that it is required
set_extension_and_file_name(use_full_path)
else
@source = path_or_source
@extension = inline_type
end
# Clear the forward slash at the beginning if exists
@path = use_full_path ? path.sub(/^\//, '') : path
@view.first_render ||= @path
@source = nil # Don't read the source until we know that it is required
set_extension_and_file_name(use_full_path)

@locals = locals || {}
@handler = self.class.handler_class_for_extension(@extension).new(@view)
end
Expand All @@ -32,7 +28,7 @@ def source
end

def method_key
@method_key ||= (@filename || @source)
@filename
end

def base_path_for_exception
Expand Down
6 changes: 3 additions & 3 deletions actionpack/test/controller/custom_handler_test.rb
Expand Up @@ -20,7 +20,7 @@ def setup
end

def test_custom_render
template = ActionView::Template.new(@view, "hello <%= one %>", false, { :one => "two" }, true, "foo")
template = ActionView::InlineTemplate.new(@view, "hello <%= one %>", { :one => "two" }, "foo")

result = @view.render_template(template)
assert_equal(
Expand All @@ -29,7 +29,7 @@ def test_custom_render
end

def test_custom_render2
template = ActionView::Template.new(@view, "hello <%= one %>", false, { :one => "two" }, true, "foo2")
template = ActionView::InlineTemplate.new(@view, "hello <%= one %>", { :one => "two" }, "foo2")
result = @view.render_template(template)
assert_equal(
[ "hello <%= one %>", { :one => "two" }, @view ],
Expand All @@ -38,7 +38,7 @@ def test_custom_render2

def test_unhandled_extension
# uses the ERb handler by default if the extension isn't recognized
template = ActionView::Template.new(@view, "hello <%= one %>", false, { :one => "two" }, true, "bar")
template = ActionView::InlineTemplate.new(@view, "hello <%= one %>", { :one => "two" }, "bar")
result = @view.render_template(template)
assert_equal "hello two", result
end
Expand Down

0 comments on commit 534c6b2

Please sign in to comment.