1 ! Copyright (C) 2005, 2009 Daniel Ehrenberg
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel sequences unicode.categories.syntax math math.order
4 combinators hints combinators.short-circuit ;
7 CATEGORY: 1.0name-start
9 [ 0x2BB 0x2C1 between? ]
10 [ "\u000559\u0006E5\u0006E6_:" member? ]
13 CATEGORY: 1.0name-char
14 Ll Lu Lo Lt Nl Mc Me Mn Lm Nd |
15 "_-.\u000387:" member? ;
17 CATEGORY: 1.1name-start
21 CATEGORY: 1.1name-char
22 Ll Lu Lo Lm Nl Mc Mn Nd Pc Cf |
23 "_-.\u0000b7:" member? ;
25 : name-start? ( 1.0? char -- ? )
26 swap [ 1.0name-start? ] [ 1.1name-start? ] if ;
28 : name-char? ( 1.0? char -- ? )
29 swap [ 1.0name-char? ] [ 1.1name-char? ] if ;
31 HINTS: name-start? { object fixnum } ;
32 HINTS: name-char? { object fixnum } ;
36 : 1.0-text? ( char -- ? )
38 ! #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
40 [ 0x20 0xD7FF between? ]
42 [ 0xE000 0xFFFD between? ]
43 [ 0x10000 0x10FFFF between? ]
46 : 1.1-text? ( char -- ? )
48 ! [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
50 [ 0x1 0xD7FF between? ]
51 [ 0xE000 0xFFFD between? ]
52 [ 0x10000 0x10FFFF between? ]
57 : text? ( 1.0? char -- ? )
58 swap [ 1.0-text? ] [ 1.1-text? ] if ;
60 HINTS: text? { object fixnum } ;