summary: refactoring to use the formatting vocab + tests
parent
7a6570b355
commit
52c5d2b0a4
|
@ -0,0 +1,5 @@
|
|||
USING: summary tools.test ;
|
||||
IN: summary.tests
|
||||
|
||||
{ "string with 5 elements" } [ "hello" summary ] unit-test
|
||||
{ "hash-set with 3 members" } [ HS{ 1 2 3 } summary ] unit-test
|
|
@ -1,38 +1,26 @@
|
|||
! Copyright (C) 2008 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: accessors assocs classes continuations kernel make math
|
||||
math.parser sequences sets ;
|
||||
USING: accessors assocs classes continuations formatting kernel math
|
||||
sequences sets strings ;
|
||||
IN: summary
|
||||
|
||||
GENERIC: summary ( object -- string )
|
||||
|
||||
: object-summary ( object -- string ) class-of name>> ; inline
|
||||
|
||||
: container-summary ( obj size word -- str )
|
||||
[ object-summary ] 2dip "%s with %d %s" sprintf ;
|
||||
|
||||
M: object summary object-summary ;
|
||||
|
||||
M: sequence summary
|
||||
[
|
||||
dup class-of name>> %
|
||||
" with " %
|
||||
length #
|
||||
" elements" %
|
||||
] "" make ;
|
||||
dup length "elements" container-summary ;
|
||||
|
||||
M: assoc summary
|
||||
[
|
||||
dup class-of name>> %
|
||||
" with " %
|
||||
assoc-size #
|
||||
" entries" %
|
||||
] "" make ;
|
||||
dup assoc-size "entries" container-summary ;
|
||||
|
||||
M: unordered-set summary
|
||||
[
|
||||
dup class-of name>> %
|
||||
" with " %
|
||||
cardinality #
|
||||
" members" %
|
||||
] "" make ;
|
||||
dup cardinality "members" container-summary ;
|
||||
|
||||
! Override sequence => integer instance
|
||||
M: f summary object-summary ;
|
||||
|
|
Loading…
Reference in New Issue