From e350a938e68b2d24715b8b49f57adc31fc971492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Wed, 23 Jun 2010 11:47:44 +0100 Subject: [PATCH] new predicates --- pl/chtypes.yap | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/pl/chtypes.yap b/pl/chtypes.yap index 3610afea2..c22e63e23 100644 --- a/pl/chtypes.yap +++ b/pl/chtypes.yap @@ -410,11 +410,6 @@ code_type(Code, Spec) :- Upper =< "Z" -> Spec is Upper + ("a"-"A") - ; - Upper >= "a", - Upper =< "z" - -> - fail ; Spec = Upper ). @@ -422,19 +417,32 @@ code_type(Code, Spec) :- Lower >= "a", Lower =< "z", Spec is Lower + ("A"-"a"). -'$handle_special_char_type'(Spec, upper(Lower)) :- +'$handle_special_char_type'(Spec, to_upper(Lower)) :- ( Lower >= "a", Lower =< "z" -> Spec is Lower + ("A"-"a") - ; - Lower >= "A", - Lower =< "Z" - -> - fail ; Spec = Lower ). +downcase_atom(U, D) :- + atom_codes(U, Codes), + '$downcase_codes'(Codes, DCodes), + atom_codes(D, DCodes). +'$downcase_codes'([], []). +'$downcase_codes'(C.Codes, D.DCodes) :- + code_type(D, to_lower(C)), + '$downcase_codes'(Codes, DCodes). + +upcase_atom(U, D) :- + atom_codes(U, Codes), + '$upcase_codes'(Codes, DCodes), + atom_codes(D, DCodes). + +'$upcase_codes'([], []). +'$upcase_codes'(C.Codes, D.DCodes) :- + code_type(D, to_upper(C)), + '$upcase_codes'(Codes, DCodes).