This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
require 'facets/cgi/escape_html'
|
||||
|
||||
class CGI
|
||||
|
||||
# Instance level method for {CGI::escape_html}.
|
||||
|
||||
def esc(string, *modes)
|
||||
self.class.escape_html(string, *modes)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,63 @@
|
||||
require 'cgi'
|
||||
|
||||
class CGI
|
||||
|
||||
# Extends `#escape_html` to support escape modes. By default all strings
|
||||
# are escaped on `&`, `>` and `<`. Add the `:nonstandard` mode to omit
|
||||
# this conversion.
|
||||
#
|
||||
# If no mode is given then the `:default` mode is used.
|
||||
#
|
||||
# Available modes include:
|
||||
# * `:quote` - escapes single and double quotes
|
||||
# * `:newlines` - escapes newline characters (\r and \n)
|
||||
# * `:ampersand` - escapes the ampersand sign
|
||||
# * `:brackets` - escapes less-than and greater-than signs
|
||||
# * `:default` - escapes double quotes
|
||||
#
|
||||
# @example
|
||||
# escape_html("<tag>") #=> "<tag>"
|
||||
# escape_html("Example\nString", :newlines) #=> "Example String"
|
||||
# escape_html("\"QUOTE\"", false) #=> "\"QUOTE\""
|
||||
#
|
||||
def self.escape_html(string, *modes)
|
||||
modes << :defualt if modes.empty?
|
||||
|
||||
unless modes.include?(:nonstandard)
|
||||
string = string.gsub(/&/, '&').gsub(/>/, '>').gsub(/</, '<')
|
||||
end
|
||||
|
||||
modes.each do |mode|
|
||||
string = \
|
||||
case mode
|
||||
when :quote, :quotes
|
||||
string.gsub(%r|"|,'"').gsub(%r|'|,''')
|
||||
when :newlines, :newlines
|
||||
string.gsub(/[\r\n]+/,' ')
|
||||
when :ampersand
|
||||
string.gsub(/&/, '&')
|
||||
when :bracket, :brackets
|
||||
string.gsub(/>/, '>').gsub(/</, '<')
|
||||
when :default, true
|
||||
string.gsub(/\"/, '"')
|
||||
when false
|
||||
else
|
||||
raise ArgumentError, "unrecognized HTML escape mode -- #{node}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class << self
|
||||
# @deprecated
|
||||
alias :escapeHTML :escape_html
|
||||
end
|
||||
|
||||
if RUBY_VERSION < '1.9'
|
||||
class << self
|
||||
alias :unescape_html :unescapeHTML
|
||||
alias :escape_element :escapeElement
|
||||
alias :unescape_element :unescapeElement
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,20 @@
|
||||
require 'cgi'
|
||||
|
||||
class CGI
|
||||
|
||||
# Create an hidden input field through which an object can can be marshalled.
|
||||
# This makes it very easy to pass form data betwenn requests.
|
||||
def marshal_to_cgi(name, iobj)
|
||||
data = CGI.escape(Marshal.dump(iobj))
|
||||
return %Q{<input type="hidden" name="__#{name}__" value="#{data}"/>\n}
|
||||
end
|
||||
|
||||
# Create an hidden input field through which an object can can be marshalled.
|
||||
# This makes it very easy to pass form data between requests.
|
||||
def marshal_from_cgi(name)
|
||||
if self.params.has_key?("__#{name}__")
|
||||
return Marshal.load(CGI.unescape(self["__#{name}__"][0]))
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user