Sha256: 8d056f30fe5c724422c0658b21b2e704ab787a2d32bd8931eef5f24d4adf2025
Contents?: true
Size: 1.13 KB
Versions: 4
Compression:
Stored size: 1.13 KB
Contents
module Puma module Utils # 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). def self.escape(s) s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) { '%'+$1.unpack('H2'*$1.size).join('%').upcase }.tr(' ', '+') end # Unescapes a URI escaped string. (Stolen from Camping). def self.unescape(s) s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){ [$1.delete('%')].pack('H*') } end # 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 '&;'. def self.query_parse(qs, d = '&;') params = {} qs.split(/[#{d}] */n).each do |p| k, v = unescape(p).split('=', 2) if cur = params[k] if cur.kind_of? Array params[k] << v else params[k] = [cur, v] end else params[k] = v end end return params end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
puma-0.8.2-java | lib/puma/utils.rb |
puma-0.8.2 | lib/puma/utils.rb |
puma-0.8.1 | lib/puma/utils.rb |
puma-0.8.0 | lib/puma/utils.rb |