Module: Camping

Defined in:
lib/camping.rb,
lib/camping-mural.rb

Defined Under Namespace

Modules: Controllers, Models, Views Classes: Response

Constant Summary collapse

C =
self

Class Method Summary collapse

Class Method Details



86
# File 'lib/camping.rb', line 86

def cookie_parse(s); c = qs_parse(s, ';,'); end

.escape(s) ⇒ Object



82
# File 'lib/camping.rb', line 82

def escape(s); s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n){'%'+$1.unpack('H2'*$1.size).join('%').upcase}.tr(' ', '+') end

.qs_parse(qs, d = '&;') ⇒ Object



84
85
# File 'lib/camping.rb', line 84

def qs_parse(qs, d = '&;'); OpenStruct.new((qs||'').split(/[#{d}] */n).
inject({}){|hsh, p|k, v = p.split('=',2).map {|v| unescape(v)}; hsh[k] = v unless v.empty?; hsh}) end

.run(r = $stdin, w = $stdout) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/camping.rb', line 87

def run(r=$stdin,w=$stdout)
  begin
    k, a, m = Controllers.D(ENV['PATH_INFO']) + [ENV['REQUEST_METHOD'] || "GET"]
    k.class_eval { include Controllers::RM }
    o = k.new
    o.class.class_eval do
      Models.constants.each do |c|
        g = Models.const_get(c)
        remove_const c if const_defined? c
        const_set c, g
      end
    end
    w << o.service(r, ENV, m, a)
  rescue => e
    w << Response.new(200) { @headers['Content-Type'] = 'text/html'; @body = Markaby::Builder.new({}, {}) { h1 'Camping Problem!'; h2 "#{k}.#{m}"; h3 "#{e.class} #{e.message}:"; ul { e.backtrace.each { |bt| li bt } } }.to_s }
  end
end

.unescape(s) ⇒ Object



83
# File 'lib/camping.rb', line 83

def unescape(s); s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){[$1.delete('%')].pack('H*')} end