30 lines
751 B
Factor
30 lines
751 B
Factor
|
! Copyright (C) 2009 Daniel Ehrenberg
|
||
|
! See http://factorcode.org/license.txt for BSD license.
|
||
|
USING: wrap kernel sequences fry splitting math ;
|
||
|
IN: wrap.strings
|
||
|
|
||
|
<PRIVATE
|
||
|
|
||
|
: split-lines ( string -- elements-lines )
|
||
|
string-lines [
|
||
|
" \t" split harvest
|
||
|
[ dup length 1 <element> ] map
|
||
|
] map ;
|
||
|
|
||
|
: join-elements ( wrapped-lines -- lines )
|
||
|
[ " " join ] map ;
|
||
|
|
||
|
: join-lines ( strings -- string )
|
||
|
"\n" join ;
|
||
|
|
||
|
PRIVATE>
|
||
|
|
||
|
: wrap-lines ( lines width -- newlines )
|
||
|
[ split-lines ] dip '[ _ dup wrap join-elements ] map concat ;
|
||
|
|
||
|
: wrap-string ( string width -- newstring )
|
||
|
wrap-lines join-lines ;
|
||
|
|
||
|
: wrap-indented-string ( string width indent -- newstring )
|
||
|
[ length - wrap-lines ] keep '[ _ prepend ] map join-lines ;
|