factor/basis/summary/summary.factor

34 lines
882 B
Factor
Raw Normal View History

2008-07-02 01:20:01 -04:00
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs classes continuations formatting kernel math
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
: container-summary ( obj size word -- str )
[ object-summary ] 2dip "%s with %d %s" sprintf ;
2008-07-02 01:20:01 -04:00
M: object summary object-summary ;
M: sequence summary
dup length "elements" container-summary ;
2008-07-02 01:20:01 -04:00
M: assoc summary
dup assoc-size "entries" container-summary ;
2008-07-02 01:20:01 -04:00
2015-08-12 11:37:06 -04:00
M: unordered-set summary
dup cardinality "members" container-summary ;
2013-11-25 19:25:02 -05:00
2008-07-02 01:20:01 -04:00
! Override sequence => integer instance
M: f summary object-summary ;
M: integer summary object-summary ;
: safe-summary ( object -- string )
[ summary ]
[ drop object-summary "~summary error: " "~" surround ]
recover ;