lib: adds methods to tell if Char is a lower, upper, letter and digit
authorAlexis Laferrière <alexis.laf@xymus.net>
Mon, 24 Jan 2011 20:42:44 +0000 (15:42 -0500)
committerJean Privat <jean@pryen.org>
Tue, 25 Jan 2011 02:09:49 +0000 (21:09 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>
Signed-off-by: Jean Privat <jean@pryen.org>

lib/standard/kernel.nit
tests/sav/test_char_is_meths.sav [new file with mode: 0644]
tests/test_char_is_meths.nit [new file with mode: 0644]

index 994ddf0..35e46ca 100644 (file)
@@ -372,7 +372,7 @@ special Discrete
 
                if self == '-' then
                        return -1
-               else if self >= '0' and self <= '9' then
+               else if is_digit then
                        return self.ascii - '0'.ascii
                else
                        return self.to_lower.ascii - ('a'.ascii + 10)
@@ -388,7 +388,7 @@ special Discrete
        # Char to lower case
        fun to_lower : Char
        do
-               if self >= 'A' and self <= 'Z' then
+               if is_upper then
                        return (ascii + ('a'.distance('A'))).ascii
                else
                        return self
@@ -398,12 +398,32 @@ special Discrete
        # Char to upper case
        fun to_upper : Char
        do
-               if self >= 'a' and self <= 'z' then
+               if is_lower then
                        return (ascii - ('a'.distance('A'))).ascii
                else
                        return self
                end
        end
+       
+       fun is_digit : Bool
+       do
+               return self >= '0' and self <= '9'
+       end
+       
+       fun is_lower : Bool
+       do
+               return self >= 'a' and self <= 'z'
+       end
+       
+       fun is_upper : Bool
+       do
+               return self >= 'A' and self <= 'Z'
+       end
+       
+       fun is_letter : Bool
+       do
+               return is_lower or is_upper
+       end
 end
 
 # Pointer classes are used to manipulate extern C structures.
diff --git a/tests/sav/test_char_is_meths.sav b/tests/sav/test_char_is_meths.sav
new file mode 100644 (file)
index 0000000..9e83bf7
--- /dev/null
@@ -0,0 +1,8 @@
+true
+false
+false
+true
+true
+false
+false
+true
diff --git a/tests/test_char_is_meths.nit b/tests/test_char_is_meths.nit
new file mode 100644 (file)
index 0000000..d8dfb64
--- /dev/null
@@ -0,0 +1,13 @@
+
+print 'a'.is_lower
+print 'B'.is_lower
+
+print 'a'.is_upper
+print 'B'.is_upper
+
+print 'a'.is_letter
+print '1'.is_letter
+
+print 'a'.is_digit
+print '1'.is_digit
+