diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2008-11-07 17:46:03 -0500 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2008-11-07 17:46:03 -0500 |
commit | c77e6ace66b34390e9c1e173c580d86e88915267 (patch) | |
tree | 0015271a607ce8d56190b0a2691a13dc6f672d5c | |
parent | 99648c96721586b6dcdc1c0a9d5963991169b548 (diff) | |
download | rails-c77e6ace66b34390e9c1e173c580d86e88915267.tar.gz rails-c77e6ace66b34390e9c1e173c580d86e88915267.tar.bz2 rails-c77e6ace66b34390e9c1e173c580d86e88915267.zip |
Check whether last arg is a Hash instead of duck-typing against []
-rw-r--r-- | actionpack/lib/action_view/helpers/atom_feed_helper.rb | 13 |
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 |