Module Rack::Utils
In: lib/rack/utils.rb

Rack::Utils contains a grab-bag of useful methods for writing web applications adopted from all kinds of Ruby libraries.

Methods

Classes and Modules

Module Rack::Utils::Multipart
Class Rack::Utils::HeaderHash

Public Instance methods

Performs URI escaping so that you can construct proper query strings faster. Use this rather than the cgi.rb version since it’s faster. (Stolen from Camping).

[Source]

    # File lib/rack/utils.rb, line 11
11:     def escape(s)
12:       s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
13:         '%'+$1.unpack('H2'*$1.size).join('%').upcase
14:       }.tr(' ', '+')
15:     end

Escape ampersands, brackets and quotes to their HTML/XML entities.

[Source]

    # File lib/rack/utils.rb, line 52
52:     def escape_html(string)
53:       string.to_s.gsub("&", "&").
54:         gsub("<", "&lt;").
55:         gsub(">", "&gt;").
56:         gsub("'", "&#39;").
57:         gsub('"', "&quot;")
58:     end

Stolen from Mongrel: Parses a query string by breaking it up at the ’&’ and ’;’ characters. You can also use this to parse cookies by changing the characters used in the second parameter (which defaults to ’&;’.

[Source]

    # File lib/rack/utils.rb, line 32
32:     def parse_query(qs, d = '&;')
33:       params = {}
34:       (qs||'').split(/[#{d}] */n).inject(params) { |h,p|
35:         k, v=unescape(p).split('=',2)
36:         if cur = params[k]
37:           if cur.class == Array
38:             params[k] << v
39:           else
40:             params[k] = [cur, v]
41:           end
42:         else
43:           params[k] = v
44:         end
45:       }
46: 
47:       return params
48:     end

Unescapes a URI escaped string. (Stolen from Camping).

[Source]

    # File lib/rack/utils.rb, line 19
19:     def unescape(s)
20:       s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){
21:         [$1.delete('%')].pack('H*')
22:       }
23:     end

[Validate]