]> gitweb.factorcode.org Git - factor.git/blob - basis/wrap/strings/strings.factor
wrap.strings: allow wrap-indented-string to have a numbered indent provided.
[factor.git] / basis / wrap / strings / strings.factor
1 ! Copyright (C) 2009 Daniel Ehrenberg
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: fry kernel math sequences splitting strings wrap ;
4 IN: wrap.strings
5
6 <PRIVATE
7
8 : split-lines ( string -- elements-lines )
9     string-lines [
10         " \t" split harvest
11         [ dup length 1 <element> ] map!
12     ] map! ;
13
14 : join-elements ( wrapped-lines -- lines )
15     [ " " join ] map! ;
16
17 : join-lines ( strings -- string )
18     "\n" join ;
19
20 PRIVATE>
21
22 : wrap-lines ( string width -- newlines )
23     [ split-lines ] dip '[ _ dup wrap join-elements ] map! concat ;
24
25 : wrap-string ( string width -- newstring )
26     wrap-lines join-lines ;
27
28 <PRIVATE
29
30 : make-indent ( indent -- indent' )
31     dup string? [ CHAR: \s <string> ] unless ; inline
32
33 PRIVATE>
34
35 : wrap-indented-string ( string width indent -- newstring )
36     make-indent [ length - wrap-lines ] keep
37     '[ _ prepend ] map! join-lines ;