2008-07-02 01:20:01 -04:00
|
|
|
! Copyright (C) 2008 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2016-03-25 12:42:04 -04:00
|
|
|
USING: accessors assocs classes continuations kernel make math
|
|
|
|
math.parser sequences sets strings ;
|
2008-07-02 01:20:01 -04:00
|
|
|
IN: summary
|
|
|
|
|
|
|
|
GENERIC: summary ( object -- string )
|
|
|
|
|
2013-11-25 19:25:02 -05:00
|
|
|
: object-summary ( object -- string ) class-of name>> ; inline
|
2008-07-02 01:20:01 -04:00
|
|
|
|
2016-03-25 09:00:48 -04:00
|
|
|
: container-summary ( obj size word -- str )
|
2016-03-25 12:42:04 -04:00
|
|
|
[ object-summary ] 2dip [
|
|
|
|
[ % " with " % ] [ # ] [ " " % % ] tri*
|
|
|
|
] "" make ;
|
2016-03-25 09:00:48 -04:00
|
|
|
|
2016-03-25 09:37:53 -04:00
|
|
|
GENERIC: tuple-summary ( object -- string )
|
2008-07-02 01:20:01 -04:00
|
|
|
|
2016-03-25 09:37:53 -04:00
|
|
|
M: assoc tuple-summary
|
2016-03-25 09:00:48 -04:00
|
|
|
dup assoc-size "entries" container-summary ;
|
2008-07-02 01:20:01 -04:00
|
|
|
|
2016-03-25 09:37:53 -04:00
|
|
|
M: object tuple-summary
|
2016-03-30 17:01:34 -04:00
|
|
|
object-summary ;
|
2016-03-25 09:37:53 -04:00
|
|
|
|
2016-03-29 18:46:29 -04:00
|
|
|
M: set tuple-summary
|
2016-03-25 09:00:48 -04:00
|
|
|
dup cardinality "members" container-summary ;
|
2013-11-25 19:25:02 -05:00
|
|
|
|
2016-03-25 09:37:53 -04:00
|
|
|
M: tuple summary
|
|
|
|
tuple-summary ;
|
|
|
|
|
|
|
|
M: object summary object-summary ;
|
|
|
|
|
|
|
|
M: sequence summary
|
|
|
|
dup length "elements" container-summary ;
|
|
|
|
|
2016-03-25 09:46:37 -04:00
|
|
|
M: string summary
|
|
|
|
dup length "characters" container-summary ;
|
|
|
|
|
2008-07-02 01:20:01 -04:00
|
|
|
! Override sequence => integer instance
|
|
|
|
M: f summary object-summary ;
|
|
|
|
|
|
|
|
M: integer summary object-summary ;
|
2012-07-22 17:36:51 -04:00
|
|
|
|
|
|
|
: safe-summary ( object -- string )
|
|
|
|
[ summary ]
|
|
|
|
[ drop object-summary "~summary error: " "~" surround ]
|
|
|
|
recover ;
|