4 Pretty-Printing
This library provides facilities for pretty-printing JavaScript source. It be can required via:
| (require (planet dherman/javascript:8:0/print)) |
This library depends on the pprint PLaneT package, which can be required via:
(require (planet dherman/pprint:4))
See the documentation for pprint for information on how to use it.
4.1 Formatting Terms
| (format-term term) → doc? |
| term : Term/X? |
Formats any JavaScript term as a doc for pretty-printing.
| (format-source-element element) → doc? |
| element : SourceElement? |
Formats a JavaScript source element as a doc for pretty-printing.
| (format-variable-initializer init) → doc? |
| init : VariableInitializer? |
Formats a variable initializer as a doc for pretty-printing.
| (format-declaration decl) → doc? |
| decl : Declaration? |
Formats a declaration as a doc for pretty-printing.
| (format-expression expr) → doc? |
| expr : Expression/X? |
Formats an expression as a doc for pretty-printing.
| (format-subexpression expr parent) → doc? |
| expr : Expression? |
| parent : Expression? |
Formats an expression expr that occurs as an immediate subexpression of parent as a doc for pretty-printing. The parenthesization is determined based on the precedence of the two expressions.
| (format-statement stmt) → doc? |
| stmt : Statement/X? |
Formats a statement as a doc for pretty-printing. Post-conditions: The statement output includes its own semicolon if appropriate, and statement output is not newline-terminated.
| (format-nested-substatement stmt) → doc? |
| stmt : SubStatement/X? |
Formats a statement that occurs as an indented substatement as a doc for pretty-printing. Post-condition: The indentation level is returned to its previous level after the substatement.
| (format-substatement stmt) → doc? |
| stmt : SubStatement/X? |
Formats a statement that occurs as a substatement as a doc for pretty-printing.
| (format-case-clause clause) → doc? |
| clause : CaseClause? |
Formats a case clause as a doc for pretty-printing.
| (format-property property) → doc? |
| property : Property? |
Formats an object property as a doc for pretty-printing.
| (format-identifier id) → doc? |
| id : Identifier? |
Formats an identifier as a doc for pretty-printing.
4.2 Configuration Parameters
| current-indentation-width : (parameter/c natural-number/c) |
The number of spaces to indent.
| collapse-lines? : (parameter/c boolean?) |
(Currently ignored.)
| collapse-simple-substatements? : (parameter/c boolean?) |
Non-block substatements stay on same line?
4.3 Extending the Pretty-Printer
As described in Extending the Language, it is possible to extend the language with custom forms. The pretty-printer can be extended with extra matchers that recognize just their form types and produce pretty-printed docs. Matchers should simple fail to match (raising the same error as (match) would for anything other than the forms they recognize.
| |
| |
| |
|
| (format-map f elts param) → c |
| f : (a -> c) |
| elts : (or (listof a) b) |
| param : (parameter/c (b -> c)) |
Applies a formatter to an extensible list of terms (such as an ExpressionList/X or StatementList/X). If the formatter fails to match, the current value of the param parameter is used to format the elements instead.
4.4 S-Expression Syntax
This module also provides a few utilities for generating an alternative S-expression syntax of JavaScript.
| (sexp? x) → boolean? |
| x : any |
Determines whether x is an S-expression.
| (Expression->sexp expr) → sexp? |
| expr : Expression? |
Creates an S-expression representation of an expression.
| (Statement->sexp stmt) → sexp? |
| stmt : Statement? |
Creates an S-expression representation of a statement.
| (SourceElement->sexp elt) → sexp? |
| elt : SourceElement? |
Creates an S-expression representation of a source element.