summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2023-02-24 19:06:09 +0100
committerCarlos Garnacho <carlosg@gnome.org>2023-02-27 09:18:57 +0100
commit12c21b71e5c5db0ebfd336d9678ccfbee1ae1168 (patch)
tree4febbd46dbfe2e50e55bcc6860527ca29c5edcdc /docs
parent892d1141e47a785709ced1b941bda7426271008e (diff)
downloadtracker-12c21b71e5c5db0ebfd336d9678ccfbee1ae1168.tar.gz
docs: Also fix index.json search terms for web UI
Same rationale than devhelp, we want to add ontology-related search terms there. Generate the JSON files separately, in order to merge them at the same last stage.
Diffstat (limited to 'docs')
-rwxr-xr-xdocs/reference/libtracker-sparql/generate-devhelp.sh5
-rw-r--r--docs/reference/libtracker-sparql/merge-json.py13
-rw-r--r--docs/tools/tracker-docgen-md.c81
3 files changed, 93 insertions, 6 deletions
diff --git a/docs/reference/libtracker-sparql/generate-devhelp.sh b/docs/reference/libtracker-sparql/generate-devhelp.sh
index d4d8d0f88..34581451a 100755
--- a/docs/reference/libtracker-sparql/generate-devhelp.sh
+++ b/docs/reference/libtracker-sparql/generate-devhelp.sh
@@ -15,4 +15,9 @@ echo -e " </functions>\n</book>" >>fixed.devhelp2
# Replace devhelp2 file
mv fixed.devhelp2 $devhelp_file
+# Also fix index.json file for web UI search
+index_json="${docs_name}/index.json"
+python3 ${MESON_SOURCE_ROOT}/docs/reference/libtracker-sparql/merge-json.py $index_json ../*-ontology.index.json
+rm ../*-ontology.index.json 2>/dev/null
+
popd >/dev/null
diff --git a/docs/reference/libtracker-sparql/merge-json.py b/docs/reference/libtracker-sparql/merge-json.py
new file mode 100644
index 000000000..7793f9155
--- /dev/null
+++ b/docs/reference/libtracker-sparql/merge-json.py
@@ -0,0 +1,13 @@
+#!/bin/env python3
+import json, sys
+
+index = json.load(open(sys.argv[1]))
+for x in range (2, len(sys.argv)):
+ extra = json.load(open(sys.argv[x]))
+ index['symbols'] += extra['symbols']
+
+rewritten = json.dumps(index)
+
+with open(sys.argv[1], 'w') as f:
+ f.write(rewritten)
+ f.close()
diff --git a/docs/tools/tracker-docgen-md.c b/docs/tools/tracker-docgen-md.c
index 62cc081e4..0aa099135 100644
--- a/docs/tools/tracker-docgen-md.c
+++ b/docs/tools/tracker-docgen-md.c
@@ -499,11 +499,11 @@ print_toc_classes (FILE *f,
}
void
-generate_keywords (TrackerOntologyModel *model,
- TrackerOntologyDescription *description,
- GFile *output_location,
- GList *classes,
- GList *properties)
+generate_devhelp_keywords (TrackerOntologyModel *model,
+ TrackerOntologyDescription *description,
+ GFile *output_location,
+ GList *classes,
+ GList *properties)
{
gchar *path, *filename;
GFile *file;
@@ -543,6 +543,74 @@ generate_keywords (TrackerOntologyModel *model,
fclose (f);
}
+void
+generate_search_terms (TrackerOntologyModel *model,
+ TrackerOntologyDescription *description,
+ GFile *output_location,
+ GList *classes,
+ GList *properties)
+{
+ gchar *path, *filename;
+ GFile *file;
+ GList *l;
+ FILE *f;
+ gboolean first = TRUE;
+
+ filename = g_strdup_printf ("%s-ontology.index.json", description->localPrefix);
+ file = g_file_get_child (output_location, filename);
+ g_free (filename);
+
+ path = g_file_get_path (file);
+ f = fopen (path, "w");
+ g_assert (f != NULL);
+ g_free (path);
+
+ g_fprintf (f, "{\"symbols\":[");
+
+ for (l = classes; l != NULL; l = l->next) {
+ TrackerOntologyClass *klass;
+ g_autofree gchar *desc = NULL;
+
+ if (!first)
+ g_fprintf (f, ",");
+
+ klass = tracker_ontology_model_get_class (model, l->data);
+ if (klass->description)
+ desc = g_strescape (klass->description, NULL);
+
+ g_fprintf (f, "{\"type\": \"content\", \"name\":\"%s\",\"href\":\"%s-ontology.html#%s\",\"summary\":\"%s\"}",
+ klass->shortname,
+ description->localPrefix,
+ klass->shortname,
+ desc ? desc : "");
+ first = FALSE;
+ }
+
+ for (l = properties; l != NULL; l = l->next) {
+ TrackerOntologyProperty *prop;
+ g_autofree gchar *desc = NULL;
+
+ if (!first)
+ g_fprintf (f, ",");
+
+ prop = tracker_ontology_model_get_property (model, l->data);
+ if (prop->description)
+ desc = g_strescape (prop->description, NULL);
+
+ g_fprintf (f, "{\"type\": \"content\", \"name\":\"%s\",\"href\":\"%s-ontology.html#%s\",\"summary\":\"%s\"}",
+ prop->shortname,
+ description->localPrefix,
+ prop->shortname,
+ desc ? desc : "");
+ first = FALSE;
+ }
+
+ g_fprintf (f, "]}");
+
+ g_object_unref (file);
+ fclose (f);
+}
+
/* Generate markdown document for one ontology. */
void
ttl_md_print (TrackerOntologyDescription *description,
@@ -620,7 +688,8 @@ ttl_md_print (TrackerOntologyDescription *description,
print_md_footer (f, description);
- generate_keywords (model, description, output_location, classes, properties);
+ generate_devhelp_keywords (model, description, output_location, classes, properties);
+ generate_search_terms (model, description, output_location, classes, properties);
g_free (upper_name);
g_free (introduction);