]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/ascii/ascii.factor
use radix literals
[factor.git] / basis / ascii / ascii.factor
old mode 100755 (executable)
new mode 100644 (file)
index 30b801a..6f89dea
@@ -1,26 +1,23 @@
-! Copyright (C) 2005, 2008 Slava Pestov.\r
+! Copyright (C) 2005, 2009 Slava Pestov.\r
 ! See http://factorcode.org/license.txt for BSD license.\r
-USING: kernel math math.order sequences ;\r
+USING: kernel math math.order sequences strings\r
+combinators.short-circuit hints ;\r
 IN: ascii\r
 \r
+: ascii? ( ch -- ? ) 0 127 between? ; inline\r
 : blank? ( ch -- ? ) " \t\n\r" member? ; inline\r
-\r
 : letter? ( ch -- ? ) CHAR: a CHAR: z between? ; inline\r
-\r
 : LETTER? ( ch -- ? ) CHAR: A CHAR: Z between? ; inline\r
-\r
 : digit? ( ch -- ? ) CHAR: 0 CHAR: 9 between? ; inline\r
-\r
 : printable? ( ch -- ? ) CHAR: \s CHAR: ~ between? ; inline\r
-\r
-: control? ( ch -- ? )\r
-    "\0\e\r\n\t\u000008\u00007f" member? ; inline\r
-\r
-: quotable? ( ch -- ? )\r
-    dup printable? [ "\"\\" member? not ] [ drop f ] if ; inline\r
-\r
-: Letter? ( ch -- ? )\r
-    dup letter? [ drop t ] [ LETTER? ] if ; inline\r
-\r
-: alpha? ( ch -- ? )\r
-    dup Letter? [ drop t ] [ digit? ] if ; inline\r
+: control? ( ch -- ? ) { [ 0 0x1F between? ] [ 0x7F = ] } 1|| ; inline\r
+: quotable? ( ch -- ? ) { [ printable? ] [ "\"\\" member? not ] } 1&& ; inline\r
+: Letter? ( ch -- ? ) { [ letter? ] [ LETTER? ] } 1|| ; inline\r
+: alpha? ( ch -- ? ) { [ Letter? ] [ digit? ] } 1|| ; inline\r
+: ch>lower ( ch -- lower ) dup LETTER? [ 0x20 + ] when ; inline\r
+: >lower ( str -- lower ) [ ch>lower ] map ;\r
+: ch>upper ( ch -- upper ) dup letter? [ 0x20 - ] when ; inline\r
+: >upper ( str -- upper ) [ ch>upper ] map ;\r
+\r
+HINTS: >lower string ;\r
+HINTS: >upper string ;\r