Class: CGI
- Defined in:
- lib/standard/facets/cgi/esc.rb,
lib/standard/facets/cgi/marshal.rb,
lib/standard/facets/cgi/escape_html.rb
Class Method Summary collapse
-
.escape_xhtml(string, *modes) ⇒ Object
Extended HTML/XHTML escaping with mode support.
Instance Method Summary collapse
-
#esc(string, *modes) ⇒ Object
Instance level method for escape_html.
-
#marshal_from_cgi(name) ⇒ Object
Create an hidden input field through which an object can can be marshalled.
-
#marshal_to_cgi(name, iobj) ⇒ Object
Create an hidden input field through which an object can can be marshalled.
Class Method Details
.escape_xhtml(string, *modes) ⇒ Object
Extended HTML/XHTML escaping with mode support. Unlike Ruby's built-in
CGI.escape_html, this supports additional escape modes.
Available modes:
: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
By default all strings are escaped on &, >, < and ".
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/standard/facets/cgi/escape_html.rb', line 22 def self.escape_xhtml(string, *modes) modes << :default 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 string.gsub(/[\r\n]+/,' ') when :ampersand string.gsub(/&/, '&') when :bracket, :brackets string.gsub(/>/, '>').gsub(/</, '<') when :default, true string.gsub(/\"/, '"') when false string else raise ArgumentError, "unrecognized HTML escape mode -- #{mode}" end end string end |
Instance Method Details
#esc(string, *modes) ⇒ Object
Instance level method for escape_html.
7 8 9 |
# File 'lib/standard/facets/cgi/esc.rb', line 7 def esc(string, *modes) self.class.escape_html(string, *modes) end |
#marshal_from_cgi(name) ⇒ Object
Create an hidden input field through which an object can can be marshalled. This makes it very easy to pass form data between requests.
14 15 16 17 18 |
# 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 |
#marshal_to_cgi(name, iobj) ⇒ Object
Create an hidden input field through which an object can can be marshalled. This makes it very easy to pass form data betwenn requests.
7 8 9 10 |
# 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 |