| 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.
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).
# 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.
# File lib/rack/utils.rb, line 52
52: def escape_html(string)
53: string.to_s.gsub("&", "&").
54: gsub("<", "<").
55: gsub(">", ">").
56: gsub("'", "'").
57: gsub('"', """)
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 ’&;’.
# 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