mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Update html-scanner to handle CDATA sections better. Closes #2970. [Jamis Buck]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3153 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
f1a184fe88
commit
f9b199040c
3 changed files with 18 additions and 0 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Update html-scanner to handle CDATA sections better. Closes #2970. [Jamis Buck]
|
||||
|
||||
* Don't put flash in session if sessions are disabled. [Jeremy Kemper]
|
||||
|
||||
* Strip out trailing &_= for raw post bodies. Closes #2868. [Sam Stephenson]
|
||||
|
|
|
@ -150,6 +150,11 @@ module HTML #:nodoc:
|
|||
end
|
||||
end
|
||||
|
||||
if scanner.skip(/!\[CDATA\[/)
|
||||
scanner.scan_until(/\]\]>/)
|
||||
return CDATA.new(parent, line, pos, scanner.pre_match)
|
||||
end
|
||||
|
||||
closing = ( scanner.scan(/\//) ? :close : nil )
|
||||
return Text.new(parent, line, pos, content) unless name = scanner.scan(/[\w:]+/)
|
||||
name.downcase!
|
||||
|
@ -257,6 +262,14 @@ module HTML #:nodoc:
|
|||
end
|
||||
end
|
||||
|
||||
# A CDATA node is simply a text node with a specialized way of displaying
|
||||
# itself.
|
||||
class CDATA < Text
|
||||
def to_s
|
||||
"<![CDATA[#{super}]>"
|
||||
end
|
||||
end
|
||||
|
||||
# A Tag is any node that represents markup. It may be an opening tag, a
|
||||
# closing tag, or a self-closing tag. It has a name, and may have a hash of
|
||||
# attributes.
|
||||
|
|
|
@ -52,6 +52,9 @@ module HTML #:nodoc:
|
|||
if @scanner.scan(/!--/) # comment
|
||||
tag << @scanner.matched
|
||||
tag << (@scanner.scan_until(/--\s*>/) || @scanner.scan_until(/\Z/))
|
||||
elsif @scanner.scan(/!\[CDATA\[/)
|
||||
tag << @scanner.matched
|
||||
tag << @scanner.scan_until(/\]\]>/)
|
||||
elsif @scanner.scan(/!/) # doctype
|
||||
tag << @scanner.matched
|
||||
tag << consume_quoted_regions
|
||||
|
|
Loading…
Reference in a new issue