#!/usr/bin/env ruby

require "cgi" 
require "erb" 

def describe_exception(cgi, exception)
  title = "500 Server Error"
  
  cgi.out("status" => "SERVER_ERROR") {
    cgi.html {
      cgi.head {
        cgi.title { title }
      } +
      cgi.body {
        cgi.h1 { title } +
        cgi.pre { CGI.escapeHTML(exception.to_s) }
      }
    }
  }
end

cgi = CGI.new("html4")

begin
  code = STDIN.read
  output = ERB.new(code).result(binding)
  cgi.print cgi.header
  cgi.print output
rescue Exception => exception
  describe_exception(cgi, exception)
end

