| 
									
										
										
										
											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. | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  | CATEGORY: 1.0name-start | 
					
						
							|  |  |  |     Ll Lu Lo Lt Nl | { | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  |         [ 0x2BB 0x2C1 between? ] | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  |         [ "\u000559\u0006E5\u0006E6_:" member? ] | 
					
						
							|  |  |  |     } 1|| ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  | CATEGORY: 1.1name-start | 
					
						
							| 
									
										
										
										
											2009-03-21 04:39:30 -04:00
										 |  |  |     Ll Lu Lo Lm Nl | | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  |     "_:" member? ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  | CATEGORY: 1.1name-char | 
					
						
							| 
									
										
										
										
											2009-03-21 04:39:30 -04:00
										 |  |  |     Ll Lu Lo Lm Nl Mc Mn Nd Pc Cf | | 
					
						
							| 
									
										
										
										
											2009-03-21 02:11:45 -04:00
										 |  |  |     "_-.\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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-30 15:47:38 -04: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-09-30 15:47:38 -04:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  |         [ 0x20 0xD7FF between? ] | 
					
						
							| 
									
										
										
										
											2011-09-30 15:47:38 -04:00
										 |  |  |         [ "\t\r\n" member? ] | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  |         [ 0xE000 0xFFFD between? ] | 
					
						
							|  |  |  |         [ 0x10000 0x10FFFF between? ] | 
					
						
							| 
									
										
										
										
											2011-09-30 15:47:38 -04:00
										 |  |  |     } 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? ] | 
					
						
							| 
									
										
										
										
											2011-09-30 15:47:38 -04:00
										 |  |  |     } 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 } ;
 |