[gi-docgen/tintou/opensearch] generate: Add support for OpenSearch
- From: Corentin Noël <corentinnoel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gi-docgen/tintou/opensearch] generate: Add support for OpenSearch
- Date: Thu, 4 Nov 2021 11:23:47 +0000 (UTC)
commit 9b205f19b4b69064407af4519157f76755c8263f
Author: Corentin Noël <corentin noel collabora com>
Date: Thu Nov 4 12:21:35 2021 +0100
generate: Add support for OpenSearch
If the `docs_url` key is used and the search is enabled, an OpenSearch
file is created to allow better integration with the browsers.
docs/project-configuration.rst | 2 ++
gidocgen/config.py | 4 ++++
gidocgen/gdgenerate.py | 26 +++++++++++++++++++++++++-
gidocgen/templates/basic/base.html | 5 +++++
4 files changed, 36 insertions(+), 1 deletion(-)
---
diff --git a/docs/project-configuration.rst b/docs/project-configuration.rst
index 9da5c84..728a8d4 100644
--- a/docs/project-configuration.rst
+++ b/docs/project-configuration.rst
@@ -62,6 +62,8 @@ The following keys are used, if found:
``search_index`` = ``b``
Whether gi-docgen should generate a search index file for the namespace.
+``docs_url`` = ``s``
+ The website that will provide this documentation.
The ``theme`` section
~~~~~~~~~~~~~~~~~~~~~
diff --git a/gidocgen/config.py b/gidocgen/config.py
index 3da1709..58fdec8 100644
--- a/gidocgen/config.py
+++ b/gidocgen/config.py
@@ -73,6 +73,10 @@ class GIDocConfig:
def website_url(self):
return self.library.get('website_url', '')
+ @property
+ def docs_url(self):
+ return self.library.get('docs_url', '')
+
@property
def browse_url(self):
return self.library.get('browse_url', '')
diff --git a/gidocgen/gdgenerate.py b/gidocgen/gdgenerate.py
index 325c11a..269fa39 100644
--- a/gidocgen/gdgenerate.py
+++ b/gidocgen/gdgenerate.py
@@ -2660,6 +2660,26 @@ def gen_types_hierarchy(config, theme_config, output_dir, jinja_env, repository)
"href": content["output_file"],
}
+def gen_opensearch(config, repository, namespace, symbols, content_files):
+ desc = etree.Element('OpenSearchDescription')
+ desc.set("xmlns", "http://a9.com/-/spec/opensearch/1.1/")
+ desc.set("xmlns:moz", "http://www.mozilla.org/2006/browser/search/")
+ sub = etree.SubElement(desc, 'ShortName')
+ sub.text=f"{namespace.name}"
+ sub = etree.SubElement(desc, 'Description')
+ sub.text=f"{namespace.name}-{namespace.version} Reference Manual"
+ sub = etree.SubElement(desc, 'InputEncoding')
+ sub.text="UTF-8"
+ if config.logo_url:
+ sub = etree.SubElement(desc, 'Image')
+ sub.text=config.logo_url
+ sub = etree.SubElement(desc, 'Url', type="text/html")
+ sub.set("type", "text/html")
+ sub.set("template", f"{config.docs_url}/?q={{searchTerms}}")
+ sub = etree.SubElement(desc, 'moz:SearchForm')
+ sub.text=f"{config.docs_url}"
+
+ return etree.ElementTree(desc)
def gen_devhelp(config, repository, namespace, symbols, content_files):
book = etree.Element('book')
@@ -2944,7 +2964,11 @@ def gen_reference(config, options, repository, templates_dir, theme_config, cont
res = gen_devhelp(config, repository, namespace, template_symbols, content_files)
res.write(devhelp_file, encoding="UTF-8")
- if config.search_index:
+ if config.search_index and config.docs_url:
+ opensearch_file = os.path.join(ns_dir, "opensearch.xml")
+ log.info(f"Creating OpenSearch file for {namespace.name}-{namespace.version}: {opensearch_file}")
+ res = gen_opensearch(config, repository, namespace, template_symbols, content_files)
+ res.write(opensearch_file, encoding="UTF-8")
gdgenindices.gen_indices(config, repository, content_dirs, ns_dir)
copy_files = []
diff --git a/gidocgen/templates/basic/base.html b/gidocgen/templates/basic/base.html
index 963a73e..36598ba 100644
--- a/gidocgen/templates/basic/base.html
+++ b/gidocgen/templates/basic/base.html
@@ -34,6 +34,11 @@ SPDX-License-Identifier: Apache-2.0 OR GPL-3.0-or-later
{% if CONFIG.site_url %}
<link rel="canonical" href="{{ CONFIG.site_url }}"/>
{% endif %}
+ {% if CONFIG.search_index %}
+ {% if CONFIG.docs_url %}
+ <link rel="search" type="application/opensearchdescription+xml" title="{{ namespace.name }}"
href="opensearch.xml">
+ {% endif %}
+ {% endif %}
<link rel="stylesheet" href="style.css" type="text/css" />
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]