aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers/output_safety_helper.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_view/helpers/output_safety_helper.rb')
-rw-r--r--actionpack/lib/action_view/helpers/output_safety_helper.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/output_safety_helper.rb b/actionpack/lib/action_view/helpers/output_safety_helper.rb
new file mode 100644
index 0000000000..39f3f38e33
--- /dev/null
+++ b/actionpack/lib/action_view/helpers/output_safety_helper.rb
@@ -0,0 +1,40 @@
+require 'active_support/core_ext/string/output_safety'
+
+module ActionView #:nodoc:
+ # = Action View Raw Output Helper
+ module Helpers #:nodoc:
+ module OutputSafetyHelper
+ # This method outputs without escaping a string. Since escaping tags is
+ # now default, this can be used when you don't want Rails to automatically
+ # escape tags. This is not recommended if the data is coming from the user's
+ # input.
+ #
+ # For example:
+ #
+ # <%=raw @user.name %>
+ def raw(stringish)
+ stringish.to_s.html_safe
+ end
+
+ # This method returns a html safe string using <tt>Array#join</tt> if all
+ # the items in the array, including the supplied separator, are html safe.
+ # Otherwise the result of <tt>Array#join</tt> is returned without marking
+ # it as html safe.
+ #
+ # safe_join(["Mr", "Bojangles"]).html_safe?
+ # # => false
+ #
+ # safe_join(["Mr".html_safe, "Bojangles".html_safe]).html_safe?
+ # # => true
+ #
+ def safe_join(array, sep=$,)
+ sep ||= "".html_safe
+ str = array.join(sep)
+
+ is_html_safe = array.all? { |item| item.html_safe? }
+
+ (sep.html_safe? && is_html_safe) ? str.html_safe : str
+ end
+ end
+ end
+end \ No newline at end of file