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
.cookie_parse(s) ⇒ Object
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
|