factor/basis/present/present.factor

40 lines
846 B
Factor

! Copyright (C) 2008, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors alien.c-types effects io.pathnames kernel math
math.parser quotations sequences strings vocabs words ;
IN: present
GENERIC: present ( object -- string )
M: real present number>string ;
M: complex present ( c -- str )
[ real>> number>string ]
[
imaginary>>
[ number>string ]
[ 0 >= [ "+" prepend ] when ] bi
] bi "j" 3append ;
M: string present ;
M: word present name>> ;
M: vocab-spec present name>> ;
M: effect present effect>string ;
M: f present drop "" ;
M: pathname present string>> ;
M: callable present
[ "[ ]" ] [
[ drop "[ " ]
[ [ present ] map " " join ]
[ drop " ]" ] tri 3append
] if-empty ;
M: pointer present
to>> name>> "*" append ;