Check whether last arg is a Hash instead of duck-typing against []
This commit is contained in:
parent
aaa2abf73f
commit
07fe3370f8
@ -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 @@ def atom_feed(options = {}, &block)
|
||||
end
|
||||
|
||||
class AtomBuilder
|
||||
XHTML_TAG_NAMES = %w(content rights title subtitle summary).to_set
|
||||
|
||||
def initialize(xml)
|
||||
@xml = xml
|
||||
end
|
||||
@ -140,14 +144,15 @@ def method_missing(method, *arguments, &block)
|
||||
@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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user