1 XML
2 Javascript
On this page:
2.1 Javascript syntax
js
javascript?
javascript-declaration?
javascript-statement?
javascript-expression?
2.2 Rendering Javascript and sending Javascript responses
2.2.1 Rendering Javascript in string form
javascript->string
javascript->pretty-string
2.2.2 Sending HTTP responses with Javascript content
make-js-response
Version: 3.99.0.23

 

2 Javascript

The Javascript language in Mirrors allows the programatic assembly of syntactically valid Javascript. The language uses the AST structures and pretty printing libraries from Dave Herman’s javascript.plt package as its underlying representation.

Javascript syntax describes the syntax for creating blocks of Javascript and Rendering Javascript and sending Javascript responses describes how to send Javascript responses in the PLT web server.

2.1 Javascript syntax

 (require (planet untyped/mirrors/javascript/syntax))

Mirrors provides a set of macros for rendering blocks of Javascript, intended to replace Jay McCarthy’s javascript.plt (which is no longer in development). Almost no checking is performed to make sure the Javascript code makes sense.

(js js-stmt ...)

 

js-stmt

 

=

 

js-decl

 

 

|

 

(!begin js-stmt ...)

 

 

|

 

(!block js-stmt ...)

 

 

|

 

(if js-expr js-stmt js-stmt)

 

 

|

 

(do js-stmt ... js-expr)

 

 

|

 

(while js-expr js-stmt ...)

 

 

|

 

(for (opt-decl opt-expr opt-expr) js-stmt ...)

 

 

|

 

(for-in (decl js-expr) js-stmt ...)

 

 

|

 

(break)

 

 

|

 

(break id)

 

 

|

 

(continue)

 

 

|

 

(continue id)

 

 

|

 

(return)

 

 

|

 

(return js-expr)

 

 

|

 

(with js-expr js-stmt ...)

 

 

|

 

(switch switch-clause ...)

 

 

|

 

(!label id js-stmt)

 

 

|

 

(throw js-expr)

 

 

|

 

(try try-clause ...)

 

 

|

 

,expr

 

 

|

 

,@expr

 

 

|

 

js-expr

 

 

 

 

 

js-decl

 

=

 

(function id (id ...) js-stmt ...)

 

 

|

 

var-decl

 

 

 

 

 

var-decl

 

=

 

(var js-init ...)

 

 

 

 

 

js-init

 

=

 

id

 

 

|

 

[id js-expr]

 

 

|

 

,expr

 

 

|

 

[id ,expr]

 

 

 

 

 

js-expr

 

=

 

(!array js-expr ...)

 

 

|

 

(!object [property js-expr] ...)

 

 

|

 

(!index js-expr js-expr)

 

 

|

 

(!dot js-expr ...)

 

 

|

 

(!all js-expr ...)

 

 

|

 

(? js-expr js-expr js-expr)

 

 

|

 

(new js-expr js-expr ...)

 

 

|

 

(function (id ...) js-stmt ...)

 

 

|

 

,expr

 

 

|

 

null

 

 

|

 

boolean

 

 

|

 

number

 

 

|

 

string

 

 

|

 

symbol

 

 

|

 

id

 

 

 

 

 

opt-decl

 

=

 

_

 

 

|

 

var-decl

 

 

 

 

 

opt-expr

 

=

 

_

 

 

|

 

expr

Builds a Javascript declaration, statement or expression.

(javascript? val)  boolean?

  val : any

Returns #t if val is a Javascript declaration, statement or expression.

(javascript-declaration? val)  boolean?

  val : any

Returns #t if val is a Javascript declaration.

(javascript-statement? val)  boolean?

  val : any

Returns #t if val is a Javascript statement.

(javascript-expression? val)  boolean?

  val : any

Returns #t if val is a Javascript expression.

2.2 Rendering Javascript and sending Javascript responses

2.2.1 Rendering Javascript in string form

(javascript->string val)  string?

  val : javascript-statement?

Renders a Javascript statement as a compact string with no line breaks or indentation.

(javascript->pretty-string val)  string?

  val : javascript-statement?

Renders a Javascript statement as a formatted string with line breaks and indentation.

2.2.2 Sending HTTP responses with Javascript content

(make-js-response

 [

#:code code

 

 

 

 

 

 

#:message message

 

 

 

 

 

 

#:seconds seconds

 

 

 

 

 

 

#:mime-type mime-type

 

 

 

 

 

 

#:headers headers]

 

 

 

 

 

 

content)

 

 

response

  code : integer = 200

  message : string = "OK"

  seconds : integer = (current-seconds)

  

mime-type

 

:

 

(U string bytes)

 

 

 

=

 

#"text/javascript; charset=utf-8"

  headers : (alistof symbol string) = null

  content : javascript-statement

Takes a js statement and wraps it in an HTTP response object that can be used with the PLT web server (including procedures such as send/suspend and send/suspend/dispatch). The keyword arguments correspond to the first five arguments of make-response/full.