From 5bdb66d572df3d7acda09cc96537bd379f193b39 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Mon, 24 Jan 2011 15:42:44 -0500 Subject: [PATCH] lib: adds methods to tell if Char is a lower, upper, letter and digit MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière Signed-off-by: Jean Privat --- lib/standard/kernel.nit | 26 +++++++++++++++++++++++--- tests/sav/test_char_is_meths.sav | 8 ++++++++ tests/test_char_is_meths.nit | 13 +++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 tests/sav/test_char_is_meths.sav create mode 100644 tests/test_char_is_meths.nit diff --git a/lib/standard/kernel.nit b/lib/standard/kernel.nit index 994ddf0..35e46ca 100644 --- a/lib/standard/kernel.nit +++ b/lib/standard/kernel.nit @@ -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 index 0000000..9e83bf7 --- /dev/null +++ b/tests/sav/test_char_is_meths.sav @@ -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 index 0000000..d8dfb64 --- /dev/null +++ b/tests/test_char_is_meths.nit @@ -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 + -- 1.7.9.5