= Wunderbar: Common Gateway Interface for Single Page Applications Wunder provides a number of globals, helper methods, and monkey patches which simplify the development of single page applications in the form of CGI scripts. == Globals provided * $cgi - Common Gateway Interface * $param - Access to parameters (read-only OpenStruct like interface) * $env - Access to environment variables (read-only OpenStruct like interface) * $x - XmlBuilder instance * $USER - Host user id * $HOME - Home directory * $SERVER- Server name * SELF - Request URI * SELF? - Request URI with '?' appended (avoids spoiling the cache) * $USER - user * $HOME - user's home directory * $HOST - server host * $HTTP_GET - request is an HTTP GET * $HTTP_POST - request is an HTTP POST * $XHR_JSON - request is XmlHttpRequest for JSON * $XHTML - user agent accepts XHTML responses == HTML methods * style! - argument is indented text/data * system! - run command and capture output * script! - argument is indented text/data * body? - capture exceptions, and produce a stack traceback == CGI methods * json - produce JSON output using the block specified * json! - produce JSON output using the block specified and exit * html - produce HTML output using the block specified * html! - produce HTML output using the block specified and exit * post - execute block only if method is POST * post! - if POST, produce HTML output using the block specified and exit == Helper methods * submit: runs command (or block) as a deamon process == OpenStruct methods (for $params and $env) * untaint_if_match: untaints value if it matches a regular expression == Builder extensions * indented_text: matches text indentation to markup * indented_data: useful for script and styles in HTML syntax * traceback!: formats an exception traceback * method_missing: patched to ensure open tags are closed == Command line options When run from the command line, CGI name=value pairs can be specified. Additionally, the following options are supported: * --html: HTML (HTTP GET) output is expected * --post: HTML (HTTP POST) output is expected * --json: JSON (XML HTTP Request) output is expected * --xhtml: XHTML output is expected * --prompt: prompt for key/value pairs using stdin * --install=path: produce an suexec-callable wrapper script