require 'webrick' include WEBrick require 'test.rb' def gen_toppage langs = [] Dir.glob("./syntax/*.vim") {|s| langs << File.basename(s).sub(/\.vim$/, '') } tmpl = < VimColorDirect test gateway

Language:

EOS end def gen_res(src) tmpl = < VimColorDirect test gateway
EOS

	return tmpl + src + " 
\n\n" end class VimColorServlet < HTTPServlet::AbstractServlet def do_GET(req, res) res.body = gen_toppage res['Content-Type'] = "text/html" end def do_POST(req, res) lang = req.query['lang'] return bad_req(res) if lang =~ /[^a-zA-Z0-9]/ buf = open_buffer(nil) load_syntax("syntax/#{lang}.vim") lines = make_mkup( req.query['code'] ) lines.map!{|ln| ln.join('') } res.body = gen_res(lines.join("\n")) buf.close res['Content-Type'] = "text/html" end private def bad_req(res) res.body = "bad request" res.status = 400 res['Content-Type'] = "text/plain" end end init_vim s = HTTPServer.new( :Port => 37564 ) s.mount("/", VimColorServlet) s.mount("/files", HTTPServlet::FileHandler, "./sample") trap("INT"){ free_vim s.shutdown } s.start