]> gitweb.factorcode.org Git - factor.git/blob - basis/locals/prettyprint/prettyprint.factor
Fix comments to be ! not #!.
[factor.git] / basis / locals / prettyprint / prettyprint.factor
1 ! Copyright (C) 2007, 2008 Slava Pestov, Eduardo Cavazos.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel locals locals.types prettyprint.backend
4 prettyprint.custom prettyprint.sections sequences words ;
5 IN: locals.prettyprint
6
7 : pprint-var ( var -- )
8     ! Prettyprint a read/write local as its writer, just like
9     ! in the input syntax: [| x! | ... x 3 + x! ]
10     dup local-reader? [
11         "local-writer" word-prop
12     ] when pprint-word ;
13
14 : pprint-vars ( vars -- ) [ pprint-var ] each ;
15
16 M: lambda pprint*
17     <flow
18     \ [| pprint-word
19     dup vars>> pprint-vars
20     "|" text
21     f <inset body>> pprint-elements block>
22     \ ] pprint-word
23     block> ;
24
25 : pprint-let ( let word -- )
26     pprint-word
27     <block body>> pprint-elements block>
28     \ ] pprint-word ;
29
30 M: let pprint* \ [let pprint-let ;
31
32 M: def pprint*
33     dup local>> word?
34     [ <block \ :> pprint-word local>> pprint-var block> ]
35     [ pprint-tuple ] if ;
36
37 M: multi-def pprint*
38     dup locals>> [ word? ] all?
39     [ <block \ :> pprint-word "(" text locals>> [ pprint-var ] each ")" text block> ]
40     [ pprint-tuple ] if ;