[gtk/emoji-data-cldr: 1/5] emoji: Some work on the conversion tool
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/emoji-data-cldr: 1/5] emoji: Some work on the conversion tool
- Date: Sun, 4 Oct 2020 05:05:57 +0000 (UTC)
commit 44448016e87349458e358fd2c7762ed280c01647
Author: Matthias Clasen <mclasen redhat com>
Date: Tue Apr 14 19:13:17 2020 -0400
emoji: Some work on the conversion tool
Document the variant format, and write out json
format if asked to.
gtk/emoji/convert-emoji.c | 36 +++++++++++++++++++++++++++++++-----
1 file changed, 31 insertions(+), 5 deletions(-)
---
diff --git a/gtk/emoji/convert-emoji.c b/gtk/emoji/convert-emoji.c
index 92bf66b385..94060d2194 100644
--- a/gtk/emoji/convert-emoji.c
+++ b/gtk/emoji/convert-emoji.c
@@ -18,6 +18,15 @@
/* Build with gcc -o convert-emoji convert-emoji.c `pkg-config --cflags --libs json-glib-1.0`
*/
+/* The format of the generated data is: a(auss).
+ * Each member of the array has the following fields:
+ * au - sequence of unicode codepoints. If the
+ * sequence contains a 0, it marks the point
+ * where skin tone modifiers should be inserted
+ * s - name, e.g. "man worker"
+ * s - shortname, for completion. This includes
+ * colons to mark the ends, e.g. ":guardsman:"
+ */
#include <json-glib/json-glib.h>
#include <string.h>
@@ -70,7 +79,6 @@ main (int argc, char *argv[])
GVariantBuilder builder;
GVariant *v;
GString *s;
- GBytes *bytes;
GHashTable *names;
GString *name_key;
@@ -175,11 +183,29 @@ main (int argc, char *argv[])
}
v = g_variant_builder_end (&builder);
- bytes = g_variant_get_data_as_bytes (v);
- if (!g_file_set_contents (argv[3], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
+ if (g_str_has_suffix (argv[3], ".json"))
{
- g_error ("%s", error->message);
- return 1;
+ JsonNode *node;
+ char *out;
+
+ node = json_gvariant_serialize (v);
+ out = json_to_string (node, TRUE);
+ if (!g_file_set_contents (argv[3], out, -1, &error))
+ {
+ g_error ("%s", error->message);
+ return 1;
+ }
+ }
+ else
+ {
+ GBytes *bytes;
+
+ bytes = g_variant_get_data_as_bytes (v);
+ if (!g_file_set_contents (argv[3], g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes), &error))
+ {
+ g_error ("%s", error->message);
+ return 1;
+ }
}
return 0;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]