[gnome-software] trivial: Add gs_utils_append_key_value() for use in plugins
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] trivial: Add gs_utils_append_key_value() for use in plugins
- Date: Mon, 17 Jul 2017 13:31:32 +0000 (UTC)
commit 7f896d3dffb3a8c4791739e10c80daa1f18a448b
Author: Richard Hughes <richard hughsie com>
Date: Fri Jul 14 09:52:45 2017 +0100
trivial: Add gs_utils_append_key_value() for use in plugins
lib/gs-app.c | 6 +-----
lib/gs-self-test.c | 26 ++++++++++++++++++++++++++
lib/gs-utils.c | 31 +++++++++++++++++++++++++++++++
lib/gs-utils.h | 4 ++++
4 files changed, 62 insertions(+), 5 deletions(-)
---
diff --git a/lib/gs-app.c b/lib/gs-app.c
index 652b157..03488f3 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -188,11 +188,7 @@ _g_set_array (GArray **array_ptr, GArray *new_array)
static void
gs_app_kv_lpad (GString *str, const gchar *key, const gchar *value)
{
- gsize i;
- g_string_append_printf (str, " %s:", key);
- for (i = strlen (key); i < 18; i++)
- g_string_append (str, " ");
- g_string_append_printf (str, " %s\n", value);
+ gs_utils_append_key_value (str, 20, key, value);
}
static void
diff --git a/lib/gs-self-test.c b/lib/gs-self-test.c
index 7cbbb2a..76e1788 100644
--- a/lib/gs-self-test.c
+++ b/lib/gs-self-test.c
@@ -89,6 +89,31 @@ gs_os_release_func (void)
}
static void
+gs_utils_append_kv_func (void)
+{
+ g_autoptr(GString) str = g_string_new (NULL);
+
+ /* normal */
+ gs_utils_append_key_value (str, 5, "key", "val");
+ g_assert_cmpstr (str->str, ==, "key: val\n");
+
+ /* oversize */
+ g_string_truncate (str, 0);
+ gs_utils_append_key_value (str, 5, "longkey", "val");
+ g_assert_cmpstr (str->str, ==, "longkey: val\n");
+
+ /* null key */
+ g_string_truncate (str, 0);
+ gs_utils_append_key_value (str, 5, NULL, "val");
+ g_assert_cmpstr (str->str, ==, " val\n");
+
+ /* zero align key */
+ g_string_truncate (str, 0);
+ gs_utils_append_key_value (str, 0, "key", "val");
+ g_assert_cmpstr (str->str, ==, "key: val\n");
+}
+
+static void
gs_utils_cache_func (void)
{
g_autofree gchar *fn1 = NULL;
@@ -617,6 +642,7 @@ main (int argc, char **argv)
g_test_add_func ("/gnome-software/lib/utils{wilson}", gs_utils_wilson_func);
g_test_add_func ("/gnome-software/lib/utils{error}", gs_utils_error_func);
g_test_add_func ("/gnome-software/lib/utils{cache}", gs_utils_cache_func);
+ g_test_add_func ("/gnome-software/lib/utils{append-kv}", gs_utils_append_kv_func);
g_test_add_func ("/gnome-software/lib/os-release", gs_os_release_func);
g_test_add_func ("/gnome-software/lib/app", gs_app_func);
g_test_add_func ("/gnome-software/lib/app{addons}", gs_app_addons_func);
diff --git a/lib/gs-utils.c b/lib/gs-utils.c
index be79b67..b126147 100644
--- a/lib/gs-utils.c
+++ b/lib/gs-utils.c
@@ -968,4 +968,35 @@ gs_user_agent (void)
return PACKAGE_NAME "/" PACKAGE_VERSION;
}
+/**
+ * gs_utils_append_key_value:
+ * @str: A #GString
+ * @align_len: The alignment of the @value compared to the @key
+ * @key: The text to use as a title
+ * @value: The text to use as a value
+ *
+ * Adds a line to an existing string, padding the key to a set number of spaces.
+ *
+ * Since: 3.26
+ */
+void
+gs_utils_append_key_value (GString *str, gsize align_len,
+ const gchar *key, const gchar *value)
+{
+ gsize len = 0;
+
+ g_return_if_fail (str != NULL);
+ g_return_if_fail (value != NULL);
+
+ if (key != NULL) {
+ len = strlen (key) + 2;
+ g_string_append (str, key);
+ g_string_append (str, ": ");
+ }
+ for (gsize i = len; i < align_len + 1; i++)
+ g_string_append (str, " ");
+ g_string_append (str, value);
+ g_string_append (str, "\n");
+}
+
/* vim: set noexpandtab: */
diff --git a/lib/gs-utils.h b/lib/gs-utils.h
index 7d8cdab..b92d2f8 100644
--- a/lib/gs-utils.h
+++ b/lib/gs-utils.h
@@ -85,6 +85,10 @@ gboolean gs_utils_error_convert_appstream (GError **perror);
gchar *gs_utils_get_url_scheme (const gchar *url);
gchar *gs_utils_get_url_path (const gchar *url);
const gchar *gs_user_agent (void);
+void gs_utils_append_key_value (GString *str,
+ gsize align_len,
+ const gchar *key,
+ const gchar *value);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]