aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-10-10 22:40:13 +0200
committerJosé Valim <jose.valim@gmail.com>2010-10-10 23:12:22 +0200
commit682368d4ba0bb4548f896d02bc4e038ee8ba6b4d (patch)
treeec2b03c8a1adae7fd7089aabc5466b8b3a932b11 /actionpack/lib/action_view
parentf659a1576fc4a447bbfbd866c7244d8d790a3d9c (diff)
downloadrails-682368d4ba0bb4548f896d02bc4e038ee8ba6b4d.tar.gz
rails-682368d4ba0bb4548f896d02bc4e038ee8ba6b4d.tar.bz2
rails-682368d4ba0bb4548f896d02bc4e038ee8ba6b4d.zip
Use identifiers for template equality.
Diffstat (limited to 'actionpack/lib/action_view')
-rw-r--r--actionpack/lib/action_view/renderer/template_renderer.rb2
-rw-r--r--actionpack/lib/action_view/template.rb9
-rw-r--r--actionpack/lib/action_view/template/inline.rb20
3 files changed, 30 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/renderer/template_renderer.rb b/actionpack/lib/action_view/renderer/template_renderer.rb
index 9f9df15347..a9076760c5 100644
--- a/actionpack/lib/action_view/renderer/template_renderer.rb
+++ b/actionpack/lib/action_view/renderer/template_renderer.rb
@@ -45,7 +45,7 @@ module ActionView
with_fallbacks { find_template(options[:file], options[:prefix], false, keys) }
elsif options.key?(:inline)
handler = Template.handler_class_for_extension(options[:type] || "erb")
- Template.new(options[:inline], "inline template", handler, { :locals => keys })
+ Template::Inline.new(options[:inline], handler, :locals => keys)
elsif options.key?(:template)
options[:template].respond_to?(:render) ?
options[:template] : find_template(options[:template], options[:prefix], false, keys)
diff --git a/actionpack/lib/action_view/template.rb b/actionpack/lib/action_view/template.rb
index 7dd8acf37b..3ba18cbfae 100644
--- a/actionpack/lib/action_view/template.rb
+++ b/actionpack/lib/action_view/template.rb
@@ -93,6 +93,7 @@ module ActionView
autoload :Error
autoload :Handler
autoload :Handlers
+ autoload :Inline
autoload :Text
end
@@ -184,6 +185,14 @@ module ActionView
end
end
+ def hash
+ identifier.hash
+ end
+
+ def eql?(other)
+ other.is_a?(Template) && other.identifier == identifier
+ end
+
def inspect
@inspect ||=
if defined?(Rails.root)
diff --git a/actionpack/lib/action_view/template/inline.rb b/actionpack/lib/action_view/template/inline.rb
new file mode 100644
index 0000000000..be08065b6b
--- /dev/null
+++ b/actionpack/lib/action_view/template/inline.rb
@@ -0,0 +1,20 @@
+require 'digest/md5'
+
+module ActionView
+ class Template
+ class Inline < ::ActionView::Template
+ def initialize(source, handler, options={})
+ super(source, "inline template", handler, options)
+ end
+
+ def md5_source
+ @md5_source ||= Digest::MD5.hexdigest(source)
+ end
+
+ def eql?(other)
+ other.is_a?(Inline) && other.md5_source == md5_source
+ end
+ end
+ end
+end
+ \ No newline at end of file