2005-05-05 22:30:58 -04:00
|
|
|
! Copyright (C) 2004, 2005 Slava Pestov.
|
|
|
|
|
! See http://factor.sf.net/license.txt for BSD license.
|
|
|
|
|
IN: strings
|
2005-05-18 16:26:22 -04:00
|
|
|
USING: generic kernel kernel-internals lists math namespaces
|
2005-12-30 03:57:38 -05:00
|
|
|
sequences strings vectors ;
|
2005-05-05 22:30:58 -04:00
|
|
|
|
2005-06-15 23:27:28 -04:00
|
|
|
: padding ( string count char -- string )
|
2005-12-24 18:29:31 -05:00
|
|
|
>r swap length - 0 max r> <string> ; flushable
|
2005-06-15 23:27:28 -04:00
|
|
|
|
|
|
|
|
: pad-left ( string count char -- string )
|
2005-08-19 22:22:15 -04:00
|
|
|
pick >r padding r> append ; flushable
|
2005-06-15 23:27:28 -04:00
|
|
|
|
|
|
|
|
: pad-right ( string count char -- string )
|
2005-08-19 22:22:15 -04:00
|
|
|
pick >r padding r> swap append ; flushable
|
2005-05-05 22:30:58 -04:00
|
|
|
|
2005-12-24 18:29:31 -05:00
|
|
|
: ch>string ( ch -- str ) 1 swap <string> ; flushable
|
2005-05-05 22:30:58 -04:00
|
|
|
|
2005-12-30 03:57:38 -05:00
|
|
|
: >sbuf dup length <sbuf> [ swap nappend ] keep ; inline
|
2005-05-05 22:30:58 -04:00
|
|
|
|
2005-12-25 21:05:31 -05:00
|
|
|
: >string ( seq -- array )
|
|
|
|
|
[ length 0 <string> 0 over ] keep copy-into ; inline
|
2005-05-05 22:30:58 -04:00
|
|
|
|
|
|
|
|
M: string thaw >sbuf ;
|
2005-06-12 03:38:57 -04:00
|
|
|
|
2005-12-25 21:05:31 -05:00
|
|
|
M: string like ( seq sbuf -- string )
|
|
|
|
|
drop dup string? [ >string ] unless ;
|
2005-05-05 22:30:58 -04:00
|
|
|
|
2005-09-07 17:21:11 -04:00
|
|
|
M: sbuf like ( seq sbuf -- sbuf )
|
|
|
|
|
drop dup sbuf? [ >sbuf ] unless ;
|
2005-12-30 03:57:38 -05:00
|
|
|
|
|
|
|
|
: a/an ( string -- ) first ch>lower "aeiou" member? "an " "a " ? ;
|