1 ! Copyright (C) 2009 Jose Antonio Ortega Ruiz.
2 ! See https://factorcode.org/license.txt for BSD license.
4 USING: accessors arrays classes.tuple combinators continuations io
5 kernel lexer math prettyprint quotations sequences source-files
6 source-files.errors strings words ;
10 GENERIC: fuel-pprint ( obj -- )
14 : fuel-maybe-scape ( ch -- seq )
15 dup "\\\"?#()[]'`;." member? [ CHAR: \ swap 2array ] [ 1array ] if ;
19 : fuel-restarts ( obj -- seq )
20 compute-restarts :restarts prefix ; inline
22 : fuel-pprint-sequence ( seq open close -- )
23 [ write ] dip swap [ bl ] [ fuel-pprint ] interleave write ; inline
27 M: object fuel-pprint pprint ; inline
30 name>> V{ } clone [ fuel-maybe-scape append ] reduce >string write ;
32 M: f fuel-pprint drop "nil" write ; inline
34 M: integer fuel-pprint pprint ; inline
36 M: string fuel-pprint pprint ; inline
38 M: sequence fuel-pprint "(" ")" fuel-pprint-sequence ; inline
40 M: quotation fuel-pprint "[" "]" fuel-pprint-sequence ; inline
42 M: tuple fuel-pprint tuple>array fuel-pprint ; inline
44 M: continuation fuel-pprint drop ":continuation" write ; inline
46 M: restart fuel-pprint name>> fuel-pprint ; inline
48 M: condition fuel-pprint
49 [ error>> ] [ fuel-restarts ] bi 2array condition prefix fuel-pprint ;
51 M: lexer-error fuel-pprint
57 } cleave 4array lexer-error prefix fuel-pprint ;
59 M: source-file-error fuel-pprint
60 [ path>> ] [ error>> ] bi 2array source-file-error prefix
63 M: source-file fuel-pprint path>> fuel-pprint ;