Adding functionality to unicode breaks API for future UI changes
parent
cee809ead1
commit
95d9b3a417
|
@ -9,6 +9,9 @@ IN: unicode.breaks.tests
|
||||||
[ 3 ] [ "\u001112\u001161\u0011abA\u000300a"
|
[ 3 ] [ "\u001112\u001161\u0011abA\u000300a"
|
||||||
dup last-grapheme head last-grapheme ] unit-test
|
dup last-grapheme head last-grapheme ] unit-test
|
||||||
|
|
||||||
|
[ 3 ] [ 2 "hello" first-grapheme-from ] unit-test
|
||||||
|
[ 1 ] [ 2 "hello" last-grapheme-from ] unit-test
|
||||||
|
|
||||||
: grapheme-break-test ( -- filename )
|
: grapheme-break-test ( -- filename )
|
||||||
"vocab:unicode/breaks/GraphemeBreakTest.txt" ;
|
"vocab:unicode/breaks/GraphemeBreakTest.txt" ;
|
||||||
|
|
||||||
|
|
|
@ -101,6 +101,16 @@ PRIVATE>
|
||||||
[ grapheme-class [ nip ] [ grapheme-break? ] 2bi ] find drop
|
[ grapheme-class [ nip ] [ grapheme-break? ] 2bi ] find drop
|
||||||
nip swap length or 1+ ;
|
nip swap length or 1+ ;
|
||||||
|
|
||||||
|
: first-grapheme-from ( start str -- i )
|
||||||
|
over tail-slice first-grapheme + ;
|
||||||
|
|
||||||
|
: last-grapheme ( str -- i )
|
||||||
|
unclip-last-slice grapheme-class swap
|
||||||
|
[ grapheme-class dup rot grapheme-break? ] find-last drop ?1+ nip ;
|
||||||
|
|
||||||
|
: last-grapheme-from ( end str -- i )
|
||||||
|
swap head-slice last-grapheme ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: >pieces ( str quot: ( str -- i ) -- graphemes )
|
: >pieces ( str quot: ( str -- i ) -- graphemes )
|
||||||
|
@ -114,10 +124,6 @@ PRIVATE>
|
||||||
: string-reverse ( str -- rts )
|
: string-reverse ( str -- rts )
|
||||||
>graphemes reverse concat ;
|
>graphemes reverse concat ;
|
||||||
|
|
||||||
: last-grapheme ( str -- i )
|
|
||||||
unclip-last-slice grapheme-class swap
|
|
||||||
[ grapheme-class dup rot grapheme-break? ] find-last drop ?1+ nip ;
|
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
graphemes init-table table
|
graphemes init-table table
|
||||||
|
|
Loading…
Reference in New Issue