]> gitweb.factorcode.org Git - factor.git/blob - extra/pdf/wrap/wrap.factor
0b137212a3d508f97368651c0c82efb11c394330
[factor.git] / extra / pdf / wrap / wrap.factor
1 ! Copyright (C) 2011-2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: kernel fry make math sequences ui.text unicode.categories
5 wrap ;
6
7 IN: pdf.wrap
8
9 <PRIVATE
10
11 : word-index ( string -- n/f )
12     dup [ blank? ] find drop [
13         1 + swap [ blank? not ] find-from drop
14     ] [ drop f ] if* ;
15
16 PRIVATE>
17
18 : word-split1 ( string -- before after/f )
19     dup word-index [ cut ] [ f ] if* ;
20
21 <PRIVATE
22
23 : word-split, ( string -- )
24     [ word-split1 [ , ] [ dup empty? not ] bi* ] loop drop ;
25
26 PRIVATE>
27
28 : word-split ( string -- seq )
29     [ word-split, ] { } make ;
30
31 <PRIVATE
32
33 : string>elements ( string font -- elements )
34     [ word-split ] dip '[
35         dup word-split1 "" or
36         [ _ swap text-width ] bi@
37         <element>
38     ] map ;
39
40 PRIVATE>
41
42 : visual-wrap ( line font line-width -- lines )
43     [ string>elements ] dip dup wrap [ concat ] map ;