aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-11-07 17:46:03 -0500
committerJeremy Kemper <jeremy@bitsweat.net>2008-11-07 17:46:03 -0500
commitc77e6ace66b34390e9c1e173c580d86e88915267 (patch)
tree0015271a607ce8d56190b0a2691a13dc6f672d5c /actionpack
parent99648c96721586b6dcdc1c0a9d5963991169b548 (diff)
downloadrails-c77e6ace66b34390e9c1e173c580d86e88915267.tar.gz
rails-c77e6ace66b34390e9c1e173c580d86e88915267.tar.bz2
rails-c77e6ace66b34390e9c1e173c580d86e88915267.zip
Check whether last arg is a Hash instead of duck-typing against []
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_view/helpers/atom_feed_helper.rb13
1 files changed, 9 insertions, 4 deletions
diff --git a/actionpack/lib/action_view/helpers/atom_feed_helper.rb b/actionpack/lib/action_view/helpers/atom_feed_helper.rb
index ccb7df212a..cd25684940 100644
--- a/actionpack/lib/action_view/helpers/atom_feed_helper.rb
+++ b/actionpack/lib/action_view/helpers/atom_feed_helper.rb
@@ -1,3 +1,5 @@
+require 'set'
+
# Adds easy defaults to writing Atom feeds with the Builder template engine (this does not work on ERb or any other
# template languages).
module ActionView
@@ -121,6 +123,8 @@ module ActionView
end
class AtomBuilder
+ XHTML_TAG_NAMES = %w(content rights title subtitle summary).to_set
+
def initialize(xml)
@xml = xml
end
@@ -140,14 +144,15 @@ module ActionView
@xml.__send__(method, *arguments, &block)
end
end
-
+
# True if the method name matches one of the five elements defined
# in the Atom spec as potentially containing XHTML content and
# if :type => 'xhtml' is, in fact, specified.
def xhtml_block?(method, arguments)
- %w( content rights title subtitle summary ).include?(method.to_s) &&
- arguments.last.respond_to?(:[]) &&
- arguments.last[:type].to_s == 'xhtml'
+ if XHTML_TAG_NAMES.include?(method.to_s)
+ last = arguments.last
+ last.is_a?(Hash) && last[:type].to_s == 'xhtml'
+ end
end
end