diff options
author | Julian Graham <julian.graham@aya.yale.edu> | 2009-12-22 00:19:56 -0500 |
---|---|---|
committer | Julian Graham <julian.graham@aya.yale.edu> | 2009-12-22 00:19:56 -0500 |
commit | 820f33aaed18b37f68bc4abfeea52df2df3bd374 (patch) | |
tree | c61e725f485b3a1bd85ca3192e4642ad7b31eb7f /libguile/chars.c | |
parent | 9b5a0d84600b3c86425bba5ea2324334a7ba873d (diff) | |
download | guile-820f33aaed18b37f68bc4abfeea52df2df3bd374.tar.gz |
Improved support for Unicode title case in Guile's string and character APIs.
* doc/ref/api-data.texi (Characters): Documentation for `char-titlecase'.
* doc/ref/api-i18n.texi (Character Case Mapping): Documentation for
`char-locale-titlecase' and `string-locale-titlecase'.
* libguile/chars.c, libguile/chars.h (scm_char_titlecase, scm_c_titlecase): New
functions.
* libguile/i18n.c, libguile/i18n.h (chr_to_case, scm_char_locale_titlecase,
str_to_case, scm_string_locale_titlecase): New functions.
* libguile/i18n.c (scm_char_locale_downcase, scm_char_locale_upcase,
scm_string_locale_downcase, scm_string_locale_upcase): Refactor to share code
via chr_to_case and str_to_case, as appropriate.
* module/ice-9/i18n.scm (char-locale-title-case, string-locale-titlecase): New
functions.
* libguile/srfi-13.c (string_titlecase_x): Use uc_totitle instead of uc_toupper.
* test-suite/tests/chars.test: Tests for `char-titlecase'.
* test-suite/tests/i18n.test: Tests for `char-locale-titlecase' and
`string-locale-titlecase'.
* test-suite/tests/srfi-13.test: Tests for `string-titlecase'.
Diffstat (limited to 'libguile/chars.c')
-rw-r--r-- | libguile/chars.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/libguile/chars.c b/libguile/chars.c index 68e6dc192..1c4d10609 100644 --- a/libguile/chars.c +++ b/libguile/chars.c @@ -391,7 +391,6 @@ SCM_DEFINE (scm_char_lower_case_p, "char-lower-case?", 1, 0, 0, } #undef FUNC_NAME - SCM_DEFINE (scm_char_is_both_p, "char-is-both?", 1, 0, 0, (SCM chr), "Return @code{#t} iff @var{chr} is either uppercase or lowercase, else\n" @@ -458,6 +457,16 @@ SCM_DEFINE (scm_char_downcase, "char-downcase", 1, 0, 0, } #undef FUNC_NAME +SCM_DEFINE (scm_char_titlecase, "char-titlecase", 1, 0, 0, + (SCM chr), + "Return the titlecase character version of @var{chr}.") +#define FUNC_NAME s_scm_char_titlecase +{ + SCM_VALIDATE_CHAR (1, chr); + return SCM_MAKE_CHAR (scm_c_titlecase (SCM_CHAR(chr))); +} +#undef FUNC_NAME + @@ -480,6 +489,12 @@ scm_c_downcase (scm_t_wchar c) return uc_tolower ((int) c); } +scm_t_wchar +scm_c_titlecase (scm_t_wchar c) +{ + return uc_totitle ((int) c); +} + /* There are a few sets of character names: R5RS, Guile |