guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, master, updated. release_1-9-6-39-g0ca


From: Julian Graham
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-6-39-g0ca3a34
Date: Thu, 24 Dec 2009 16:56:07 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

http://git.savannah.gnu.org/cgit/guile.git/commit/?id=0ca3a342d19ec89b8ae6bba0a74f0f9ecc5cf7c2

The branch, master has been updated
       via  0ca3a342d19ec89b8ae6bba0a74f0f9ecc5cf7c2 (commit)
      from  d7a4096d251933a21325739fcd32129b073c33ce (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0ca3a342d19ec89b8ae6bba0a74f0f9ecc5cf7c2
Author: Julian Graham <address@hidden>
Date:   Thu Dec 24 00:25:19 2009 -0500

    Support for Unicode general categories
    
    * libguile/chars.c, libguile/chars.h (scm_char_general_category): New 
function.
    * test-suite/tests/chars.test: Unit tests for `char-general-category'.
    * doc/ref/api-data.texi (Characters): Documentation for
      `char-general-category'.

-----------------------------------------------------------------------

Summary of changes:
 doc/ref/api-data.texi       |   75 +++++++++++++++++++++++++++++++++++++++++++
 libguile/chars.c            |   20 +++++++++++
 libguile/chars.h            |    1 +
 test-suite/tests/chars.test |    7 +++-
 4 files changed, 102 insertions(+), 1 deletions(-)

diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index 6721b12..b959ab9 100755
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -1875,6 +1875,81 @@ Return @code{#t} iff @var{chr} is either uppercase or 
lowercase, else
 @code{#f}.
 @end deffn
 
address@hidden {Scheme Procedure} char-general-category chr
address@hidden {C Function} scm_char_general_category (chr)
+Return a symbol giving the two-letter name of the Unicode general 
+category assigned to @var{chr} or @code{#f} if no named category is 
+assigned.  The following table provides a list of category names along
+with their meanings.
+
address@hidden @columnfractions .1 .4 .1 .4
address@hidden Lu
+ @tab Uppercase letter
+ @tab Pf
+ @tab Final quote punctuation
address@hidden Ll
+ @tab Lowercase letter
+ @tab Po
+ @tab Other punctuation
address@hidden Lt
+ @tab Titlecase letter
+ @tab Sm
+ @tab Math symbol
address@hidden Lm
+ @tab Modifier letter
+ @tab Sc
+ @tab Currency symbol
address@hidden Lo
+ @tab Other letter
+ @tab Sk
+ @tab Modifier symbol
address@hidden Mn
+ @tab Non-spacing mark
+ @tab So
+ @tab Other symbol
address@hidden Mc
+ @tab Combining spacing mark
+ @tab Zs
+ @tab Space separator
address@hidden Me
+ @tab Enclosing mark
+ @tab Zl
+ @tab Line separator
address@hidden Nd
+ @tab Decimal digit number
+ @tab Zp
+ @tab Paragraph separator
address@hidden Nl
+ @tab Letter number
+ @tab Cc
+ @tab Control
address@hidden No
+ @tab Other number
+ @tab Cf
+ @tab Format
address@hidden Pc
+ @tab Connector punctuation
+ @tab Cs
+ @tab Surrogate
address@hidden Pd
+ @tab Dash punctuation
+ @tab Co
+ @tab Private use
address@hidden Ps
+ @tab Open punctuation
+ @tab Cn
+ @tab Unassigned
address@hidden Pe
+ @tab Close punctuation
+ @tab
+ @tab
address@hidden Pi
+ @tab Initial quote punctuation
+ @tab
+ @tab
address@hidden multitable
address@hidden deffn
+
 @rnindex char->integer
 @deffn {Scheme Procedure} char->integer chr
 @deffnx {C Function} scm_char_to_integer (chr)
diff --git a/libguile/chars.c b/libguile/chars.c
index 1c4d106..16a2b90 100644
--- a/libguile/chars.c
+++ b/libguile/chars.c
@@ -25,6 +25,7 @@
 #include <ctype.h>
 #include <limits.h>
 #include <unicase.h>
+#include <unictype.h>
 
 #include "libguile/_scm.h"
 #include "libguile/validate.h"
@@ -467,6 +468,25 @@ SCM_DEFINE (scm_char_titlecase, "char-titlecase", 1, 0, 0,
 }
 #undef FUNC_NAME
 
+SCM_DEFINE (scm_char_general_category, "char-general-category", 1, 0, 0,
+           (SCM chr),
+            "Return a symbol representing the Unicode general category of "
+            "@var{chr} or @code{#f} if a named category cannot be found.")
+#define FUNC_NAME s_scm_char_general_category
+{
+  const char *sym;
+  uc_general_category_t cat;
+
+  SCM_VALIDATE_CHAR (1, chr);
+  cat = uc_general_category (SCM_CHAR (chr));
+  sym = uc_general_category_name (cat);
+
+  if (sym != NULL)
+    return scm_from_locale_symbol (sym);
+  return SCM_BOOL_F;
+}
+#undef FUNC_NAME
+
 
 
 
diff --git a/libguile/chars.h b/libguile/chars.h
index 2b00645..488dd25 100644
--- a/libguile/chars.h
+++ b/libguile/chars.h
@@ -81,6 +81,7 @@ SCM_API SCM scm_integer_to_char (SCM n);
 SCM_API SCM scm_char_upcase (SCM chr);
 SCM_API SCM scm_char_downcase (SCM chr);
 SCM_API SCM scm_char_titlecase (SCM chr);
+SCM_API SCM scm_char_general_category (SCM chr);
 SCM_API scm_t_wchar scm_c_upcase (scm_t_wchar c);
 SCM_API scm_t_wchar scm_c_downcase (scm_t_wchar c);
 SCM_API scm_t_wchar scm_c_titlecase (scm_t_wchar c);
diff --git a/test-suite/tests/chars.test b/test-suite/tests/chars.test
index 72805d1..cd1572f 100644
--- a/test-suite/tests/chars.test
+++ b/test-suite/tests/chars.test
@@ -210,7 +210,12 @@
        (not (char-is-both? #\newline))
        (char-is-both? #\a)
        (char-is-both? #\Z)
-       (not (char-is-both? #\1)))))
+       (not (char-is-both? #\1))))
+
+    (pass-if "char-general-category"
+      (and (eq? (char-general-category #\a) 'Ll)
+          (eq? (char-general-category #\A) 'Lu)
+          (eq? (char-general-category #\762) 'Lt))))
 
   (with-test-prefix "integer"
 


hooks/post-receive
-- 
GNU Guile




reply via email to

[Prev in Thread] Current Thread [Next in Thread]