class CGI
Public Class Methods
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\""
# File lib/standard/facets/cgi/escape_html.rb, line 23 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
Public Instance Methods
Instance level method for {CGI::escape_html}.
# File lib/standard/facets/cgi/esc.rb, line 7 def esc(string, *modes) self.class.escape_html(string, *modes) 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.
# File lib/standard/facets/cgi/marshal.rb, line 14 def marshal_from_cgi(name) if self.params.has_key?("__#{name}__") return Marshal.load(CGI.unescape(self["__#{name}__"][0])) end end
Create an hidden input field through which an object can can be marshalled. This makes it very easy to pass form data betwenn requests.
# File lib/standard/facets/cgi/marshal.rb, line 7 def marshal_to_cgi(name, iobj) data = CGI.escape(Marshal.dump(iobj)) return %Q{<input type="hidden" name="__#{name}__" value="#{data}"/>\n} end