Module: Deas::Cgi

Defined in:
lib/deas/cgi.rb

Class Method Summary collapse

Class Method Details

.escape(string) ⇒ Object

taken from ruby-doc.org/stdlib/libdoc/cgi/rdoc/index.html

> not requiring ‘cgi’ to save on memory usage



7
8
9
10
11
# File 'lib/deas/cgi.rb', line 7

def self.escape(string)
  string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
    '%' + $1.unpack('H2' * $1.size).join('%').upcase
  end.gsub(' ', '%20')
end

.http_query(value, key_ns = nil) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/deas/cgi.rb', line 13

def self.http_query(value, key_ns = nil)
  # optimized version taken from:
  # http://github.com/kelredd/useful/blob/master/lib/useful/ruby_extensions/hash.rb
  value.sort{|a,b| a[0].to_s <=> b[0].to_s}.collect do |key_val|
    key, val = key_val
    key_s = key_ns ? "#{key_ns}[#{key_val[0].to_s}]" : key_val[0].to_s
    if key_val[1].kind_of?(::Array)
      key_val[1].sort.collect{|i| "#{key_s}[]=#{Deas::Cgi.escape(i.to_s)}"}.join('&')
    elsif key_val[1].kind_of?(::Hash)
      Deas::Cgi.http_query(key_val[1], key_s)
    else
      "#{key_s}=#{Deas::Cgi.escape(key_val[1].to_s)}"
    end
  end.join('&')
end