]> Savannah Git Hosting - gnulib.git/commitdiff
unigbrk: Simplify code for regional indicators.
authorBruno Haible <bruno@clisp.org>
Tue, 28 Dec 2021 23:04:33 +0000 (00:04 +0100)
committerBruno Haible <bruno@clisp.org>
Tue, 28 Dec 2021 23:04:59 +0000 (00:04 +0100)
* lib/unigbrk/u-grapheme-breaks.h (FUNC): Make code for regional
indicators more future-proof.
* tests/unigbrk/test-u8-grapheme-breaks.c (main): Add test of regional
indicators.
* tests/unigbrk/test-u16-grapheme-breaks.c (main): Likewise.
* tests/unigbrk/test-u32-grapheme-breaks.c (main): Likewise.

ChangeLog
lib/unigbrk/u-grapheme-breaks.h
tests/unigbrk/test-u16-grapheme-breaks.c
tests/unigbrk/test-u32-grapheme-breaks.c
tests/unigbrk/test-u8-grapheme-breaks.c

index ac8d1baeae3ef59b7c4c6b40c8dc72ba54fb092f..fd2db814aabd7fbf1e5bfb6d86c42b2502c8c2cf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2021-12-28  Bruno Haible  <bruno@clisp.org>
+
+       unigbrk: Simplify code for regional indicators.
+       * lib/unigbrk/u-grapheme-breaks.h (FUNC): Make code for regional
+       indicators more future-proof.
+       * tests/unigbrk/test-u8-grapheme-breaks.c (main): Add test of regional
+       indicators.
+       * tests/unigbrk/test-u16-grapheme-breaks.c (main): Likewise.
+       * tests/unigbrk/test-u32-grapheme-breaks.c (main): Likewise.
+
 2021-12-28  Paul Eggert  <eggert@cs.ucla.edu>
 
        clock_getres: document portability issues better
index 2b4ae0e60da503a44d2c32ff7ee8a53bdb29d16f..915d3d0e7598d0824b3c1304fc5be7b7cc205843 100644 (file)
@@ -105,12 +105,8 @@ FUNC (const UNIT *s, size_t n, char *p)
                 /* *p = 0 */;
               /* No break between RI if there is an odd number of RI
                  characters before (GB12, GB13).  */
-              else if (prop == GBP_RI)
-                {
-                  if (ri_count % 2 == 0)
-                    *p = 1;
-                  /* else *p = 0; */
-                }
+              else if (prop == GBP_RI && (ri_count % 2) != 0)
+                /* *p = 0 */;
               /* Break everywhere (GB999).  */
               else
                 *p = 1;
index 6dc52acb7268f15bf71cb01730f9ddbea813f05d..bb25ff837f4b8f31f7599c5b5078531102be0b19 100644 (file)
@@ -99,5 +99,10 @@ main (void)
   test_u16_grapheme_breaks ("#_#", 'e', ACUTE, 'x', -1);
   test_u16_grapheme_breaks ("#_#_", 'e', ACUTE, 'e', GRAVE, -1);
 
+  /* Regional indicators. */
+  test_u16_grapheme_breaks ("##___#___#",
+                            '.', 0xD83C, 0xDDE9, 0xD83C, 0xDDEA, 0xD83C, 0xDDEB, 0xD83C, 0xDDF7, '.',
+                            -1);
+
   return 0;
 }
index d85e53fe3f6f106c3880c9756eb41a24bedecd78..a967d4f5e891a99c7a81e0576c437500fc43aede 100644 (file)
@@ -99,5 +99,10 @@ main (void)
   test_u32_grapheme_breaks ("#_#", 'e', ACUTE, 'x', -1);
   test_u32_grapheme_breaks ("#_#_", 'e', ACUTE, 'e', GRAVE, -1);
 
+  /* Regional indicators. */
+  test_u32_grapheme_breaks ("##_#_#",
+                            '.', 0x1F1E9, 0x1F1EA, 0x1F1EB, 0x1F1F7, '.',
+                            -1);
+
   return 0;
 }
index a6be9ce1ca8dda6ccf6db64492525c4a098ddb83..ac505b0d347ff647f131ecfaff834e58f6fd5bac 100644 (file)
@@ -91,5 +91,9 @@ main (void)
   test_u8_grapheme_breaks ("e"ACUTE"x", "#__#");
   test_u8_grapheme_breaks ("e"ACUTE "e"ACUTE, "#__#__");
 
+  /* Regional indicators. */
+  test_u8_grapheme_breaks (".\360\237\207\251\360\237\207\252\360\237\207\253\360\237\207\267.",
+                           "##_______#_______#");
+
   return 0;
 }