factor/basis/xml/char-classes/char-classes.factor

61 lines
1.5 KiB
Factor
Raw Normal View History

2009-01-29 22:41:08 -05:00
! Copyright (C) 2005, 2009 Daniel Ehrenberg
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
USING: kernel sequences unicode.categories.syntax math math.order
2009-03-21 04:39:30 -04:00
combinators hints combinators.short-circuit ;
2007-09-20 18:09:08 -04:00
IN: xml.char-classes
CATEGORY: 1.0name-start
Ll Lu Lo Lt Nl | {
2011-11-23 21:49:33 -05:00
[ 0x2BB 0x2C1 between? ]
[ "\u000559\u0006E5\u0006E6_:" member? ]
} 1|| ;
2007-09-20 18:09:08 -04:00
CATEGORY: 1.0name-char
Ll Lu Lo Lt Nl Mc Me Mn Lm Nd |
"_-.\u000387:" member? ;
2007-09-20 18:09:08 -04:00
CATEGORY: 1.1name-start
2009-03-21 04:39:30 -04:00
Ll Lu Lo Lm Nl |
"_:" member? ;
2007-09-20 18:09:08 -04:00
CATEGORY: 1.1name-char
2009-03-21 04:39:30 -04:00
Ll Lu Lo Lm Nl Mc Mn Nd Pc Cf |
"_-.\u0000b7:" member? ;
2007-09-20 18:09:08 -04:00
: name-start? ( 1.0? char -- ? )
swap [ 1.0name-start? ] [ 1.1name-start? ] if ;
: name-char? ( 1.0? char -- ? )
swap [ 1.0name-char? ] [ 1.1name-char? ] if ;
2009-01-19 23:25:15 -05:00
HINTS: name-start? { object fixnum } ;
HINTS: name-char? { object fixnum } ;
<PRIVATE
: 1.0-text? ( char -- ? )
2009-01-19 23:25:15 -05:00
! 1.0:
! #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
{
2011-11-23 21:49:33 -05:00
[ 0x20 0xD7FF between? ]
[ "\t\r\n" member? ]
2011-11-23 21:49:33 -05:00
[ 0xE000 0xFFFD between? ]
[ 0x10000 0x10FFFF between? ]
} 1|| ; inline
: 1.1-text? ( char -- ? )
2009-01-19 23:25:15 -05:00
! 1.1:
! [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
{
2011-11-23 21:49:33 -05:00
[ 0x1 0xD7FF between? ]
[ 0xE000 0xFFFD between? ]
[ 0x10000 0x10FFFF between? ]
} 1|| ; inline
PRIVATE>
: text? ( 1.0? char -- ? )
swap [ 1.0-text? ] [ 1.1-text? ] if ;
2009-01-29 22:41:08 -05:00
HINTS: text? { object fixnum } ;