(Not documented)
# File lib/rack/utils.rb, line 117
117: def build_nested_query(value, prefix = nil)
118: case value
119: when Array
120: value.map { |v|
121: build_nested_query(v, "#{prefix}[]")
122: }.join("&")
123: when Hash
124: value.map { |k, v|
125: build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k))
126: }.join("&")
127: when String
128: raise ArgumentError, "value must be a Hash" if prefix.nil?
129: "#{prefix}=#{escape(value)}"
130: else
131: prefix
132: end
133: end
(Not documented)
# File lib/rack/utils.rb, line 106
106: def build_query(params)
107: params.map { |k, v|
108: if v.class == Array
109: build_query(v.map { |x| [k, x] })
110: else
111: "#{escape(k)}=#{escape(v)}"
112: end
113: }.join("&")
114: end
(Not documented)
# File lib/rack/utils.rb, line 227
227: def bytesize(string)
228: string.bytesize
229: end
(Not documented)
# File lib/rack/utils.rb, line 231
231: def bytesize(string)
232: string.size
233: end
Escape ampersands, brackets and quotes to their HTML/XML entities.
# File lib/rack/utils.rb, line 137
137: def escape_html(string)
138: string.to_s.gsub("&", "&").
139: gsub("<", "<").
140: gsub(">", ">").
141: gsub("'", "'").
142: gsub('"', """)
143: end
(Not documented)
# File lib/rack/utils.rb, line 71
71: def normalize_params(params, name, v = nil)
72: if v and v =~ /^("|')(.*)\1$/
73: v = $2.gsub('\\'+$1, $1)
74: end
75: name =~ %r(\A[\[\]]*([^\[\]]+)\]*)
76: k = $1 || ''
77: after = $' || ''
78:
79: return if k.empty?
80:
81: if after == ""
82: params[k] = v
83: elsif after == "[]"
84: params[k] ||= []
85: raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array)
86: params[k] << v
87: elsif after =~ %r(^\[\]\[([^\[\]]+)\]$) || after =~ %r(^\[\](.+)$)
88: child_key = $1
89: params[k] ||= []
90: raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array)
91: if params[k].last.is_a?(Hash) && !params[k].last.key?(child_key)
92: normalize_params(params[k].last, child_key, v)
93: else
94: params[k] << normalize_params({}, child_key, v)
95: end
96: else
97: params[k] ||= {}
98: raise TypeError, "expected Hash (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Hash)
99: params[k] = normalize_params(params[k], after, v)
100: end
101:
102: return params
103: end
(Not documented)
# File lib/rack/utils.rb, line 146
146: def select_best_encoding(available_encodings, accept_encoding)
147: # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
148:
149: expanded_accept_encoding =
150: accept_encoding.map { |m, q|
151: if m == "*"
152: (available_encodings - accept_encoding.map { |m2, _| m2 }).map { |m2| [m2, q] }
153: else
154: [[m, q]]
155: end
156: }.inject([]) { |mem, list|
157: mem + list
158: }
159:
160: encoding_candidates = expanded_accept_encoding.sort_by { |_, q| -q }.map { |m, _| m }
161:
162: unless encoding_candidates.include?("identity")
163: encoding_candidates.push("identity")
164: end
165:
166: expanded_accept_encoding.find_all { |m, q|
167: q == 0.0
168: }.each { |m, _|
169: encoding_candidates.delete(m)
170: }
171:
172: return (encoding_candidates & available_encodings)[0]
173: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.