aboutsummaryrefslogtreecommitdiff
path: root/vendor/librune/gen
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-01-27 23:26:42 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-01-27 23:26:42 +0100
commit679f7928e27a95e559eb3a69febf0c6336e40234 (patch)
treeaf9c5bb35253086eb8e3ad3d7774e7349b3beefe /vendor/librune/gen
parentfd502fd87b40ae7f60314d8d9009f739f1c5fcf3 (diff)
Bump librune
Diffstat (limited to 'vendor/librune/gen')
-rwxr-xr-xvendor/librune/gen/gbrk10
-rwxr-xr-xvendor/librune/gen/rtype106
2 files changed, 111 insertions, 5 deletions
diff --git a/vendor/librune/gen/gbrk b/vendor/librune/gen/gbrk
index 58e47b4..72ee2f7 100755
--- a/vendor/librune/gen/gbrk
+++ b/vendor/librune/gen/gbrk
@@ -2,17 +2,17 @@
cache()
{
- name="/tmp/librune/$(basename "$1")"
+ name="/tmp/librune/gbrk/$(basename "$1")"
if test ! -f "$name"
then
- mkdir -p /tmp/librune
+ mkdir -p /tmp/librune/gbrk
wget -q "$1" -O "$name"
fi
}
set -e
cd "${0%/*}/.."
-exec >lib/internal/gbrk_lookup.h
+exec >include/internal/gbrk_lookup.h
readonly URL1='https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt'
readonly URL2='https://www.unicode.org/Public/UCD/latest/ucd/emoji/emoji-data.txt'
@@ -104,10 +104,10 @@ END {
lo = i
while (props[lo] == props[i + 1])
i++
- printf "\t{0x%05X, 0x%05X, %s},\n", lo, i, props[lo]
+ printf "\t{0x%06X, 0x%06X, %s},\n", lo, i, props[lo]
}
}
-' /tmp/librune/* | sort
+' /tmp/librune/gbrk/* | sort
cat <<C
};
diff --git a/vendor/librune/gen/rtype b/vendor/librune/gen/rtype
new file mode 100755
index 0000000..21916d3
--- /dev/null
+++ b/vendor/librune/gen/rtype
@@ -0,0 +1,106 @@
+#!/bin/sh
+
+cache()
+{
+ name="/tmp/librune/rtype/$(basename "$1")"
+ if test ! -f "$name"
+ then
+ mkdir -p /tmp/librune/rtype
+ wget -q "$1" -O "$name"
+ fi
+}
+
+set -e
+cd "${0%/*}/.."
+exec >include/internal/rtype_lookup.h
+
+readonly URL='https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt'
+cache "$URL"
+
+cat <<C
+/* This file is autogenerated by gen/gbrk; DO NOT EDIT. */
+
+/* TODO: Change tables to constexpr from const when Clangd gets better */
+
+#ifndef RUNE_INTERNAL_RTYPE_LOOKUP_H
+#define RUNE_INTERNAL_RTYPE_LOOKUP_H
+
+/* IWYU pragma: private */
+/* clang-format off */
+
+#include "types.h"
+#include "../rtype.h"
+
+static const unicat rtype_lat1_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = ";"
+}
+
+{
+ s = "UC_" toupper($3)
+ lo = strtonum("0X" $1)
+
+ if ($2 ~ /First/) {
+ getline
+ hi = strtonum("0X" $1)
+ } else
+ hi = lo
+
+ for (i = lo; i <= hi; i++)
+ props[i] = s
+}
+
+END {
+ for (i = 0; i <= 0xFF; i++)
+ print props[i] ","
+}
+' /tmp/librune/rtype/* | paste -d' ' - - - - - - - - | sed 's/^/\t/'
+
+cat <<C
+};
+
+static const struct {
+ rune lo, hi;
+ unicat cat;
+} rtype_cat_tbl[] = {
+C
+
+gawk '
+BEGIN {
+ FS = ";"
+}
+
+{
+ s = "UC_" toupper($3)
+ lo = strtonum("0X" $1)
+
+ if ($2 ~ /First/) {
+ getline
+ hi = strtonum("0X" $1)
+ } else
+ hi = lo
+
+ for (i = lo; i <= hi; i++)
+ props[i] = s
+}
+
+END {
+ for (i = 0; i <= 0x10FFFF; i++) {
+ if (!props[i])
+ continue
+ lo = i
+ while (props[lo] == props[i + 1])
+ i++
+ printf "\t{0x%06X, 0x%06X, %s},\n", lo, i, props[lo]
+ }
+}
+' /tmp/librune/rtype/* | sort
+
+cat <<C
+};
+
+#endif /* !RUNE_INTERNAL_RTYPE_LOOKUP_H */
+C