]> gitweb.factorcode.org Git - factor.git/blob - extra/pdf/wrap/wrap.factor
unicode: make this the API for all unicode things.
[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 wrap ;
5
6 IN: pdf.wrap
7
8 <PRIVATE
9
10 : word-index ( string -- n/f )
11     dup [ blank? ] find drop [
12         1 + swap [ blank? not ] find-from drop
13     ] [ drop f ] if* ;
14
15 PRIVATE>
16
17 : word-split1 ( string -- before after/f )
18     dup word-index [ cut ] [ f ] if* ;
19
20 <PRIVATE
21
22 : word-split, ( string -- )
23     [ word-split1 [ , ] [ dup empty? not ] bi* ] loop drop ;
24
25 PRIVATE>
26
27 : word-split ( string -- seq )
28     [ word-split, ] { } make ;
29
30 <PRIVATE
31
32 : string>elements ( string font -- elements )
33     [ word-split ] dip '[
34         dup word-split1 "" or
35         [ _ swap text-width ] bi@
36         <element>
37     ] map ;
38
39 PRIVATE>
40
41 : visual-wrap ( line font line-width -- lines )
42     [ string>elements ] dip dup wrap [ concat ] map ;