1 ! Copyright (C) 2008 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs classes continuations kernel make math
4 math.parser sequences sets strings ;
7 GENERIC: summary ( object -- string )
9 : object-summary ( object -- string ) class-of name>> ; inline
11 : container-summary ( obj size word -- str )
12 [ object-summary ] 2dip [
13 [ % " with " % ] [ # ] [ " " % % ] tri*
16 GENERIC: tuple-summary ( object -- string )
18 M: assoc tuple-summary
19 dup assoc-size "entries" container-summary ;
21 M: object tuple-summary
25 dup cardinality "members" container-summary ;
30 M: object summary object-summary ;
33 dup length "elements" container-summary ;
36 dup length "code points" container-summary ;
38 ! Override sequence => integer instance
39 M: f summary object-summary ;
41 M: integer summary object-summary ;
43 : safe-summary ( object -- string )
45 [ drop object-summary "~summary error: " "~" surround ]