mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
9415935902
This consists of: * String#html_safe! a method to mark a string as 'safe' * ActionView::SafeBuffer a string subclass which escapes anything unsafe which is concatenated to it * Calls to String#html_safe! throughout the rails helpers * a 'raw' helper which lets you concatenate trusted HTML from non-safety-aware sources (e.g. presantized strings in the DB) * New ERB implementation based on erubis which uses a SafeBuffer instead of a String Hat tip to Django for the inspiration.
28 lines
No EOL
358 B
Ruby
28 lines
No EOL
358 B
Ruby
|
|
module ActionView #:nodoc:
|
|
class SafeBuffer < String
|
|
def <<(value)
|
|
if value.html_safe?
|
|
super(value)
|
|
else
|
|
super(CGI.escapeHTML(value))
|
|
end
|
|
end
|
|
|
|
def concat(value)
|
|
self << value
|
|
end
|
|
|
|
def html_safe?
|
|
true
|
|
end
|
|
|
|
def html_safe!
|
|
self
|
|
end
|
|
|
|
def to_s
|
|
self
|
|
end
|
|
end
|
|
end |