From 4ac02710d0dd4ebaa738afc54bdb8f6df7fcceb6 Mon Sep 17 00:00:00 2001 From: Charles Tapley Hoyt Date: Fri, 17 Jan 2025 16:02:18 +0100 Subject: [PATCH] Improve static site generation --- src/pyobo/ssg/__init__.py | 10 +++------- src/pyobo/ssg/index.html | 39 ++++++++++++++++++++++++++------------- src/pyobo/ssg/term.html | 14 ++++++++++++-- 3 files changed, 41 insertions(+), 22 deletions(-) diff --git a/src/pyobo/ssg/__init__.py b/src/pyobo/ssg/__init__.py index e8fbb61f..327e68af 100644 --- a/src/pyobo/ssg/__init__.py +++ b/src/pyobo/ssg/__init__.py @@ -1,6 +1,5 @@ """Static site generator.""" -import itertools as itt from collections import defaultdict from collections.abc import Sequence from operator import attrgetter @@ -64,15 +63,12 @@ def make_site( if resource is None: raise KeyError + terms = [term for term in obo if term.prefix == obo.ontology] + if not manifest: _manifest = None else: - _manifest = sorted( - (term for term in itt.chain(obo, obo.typedefs or []) if term.prefix == obo.ontology), - key=attrgetter("identifier"), - ) - - terms = [term for term in obo if term.prefix == obo.ontology] + _manifest = sorted(terms, key=attrgetter("identifier")) directory.joinpath("index.html").write_text( index_template.render( diff --git a/src/pyobo/ssg/index.html b/src/pyobo/ssg/index.html index 18adc4d3..32b6a9ec 100644 --- a/src/pyobo/ssg/index.html +++ b/src/pyobo/ssg/index.html @@ -8,7 +8,7 @@
Metadata
-

{{ resource.get_description() }}

+

{{ resource.get_description(use_markdown=True) }}

{% if obo.data_version %}
Data Version
@@ -64,6 +64,30 @@
{% endif %} + {% if obo.typedefs %} +
+
+ Type Definitions +
+ + + + + + + + + {%- for typedef in obo.typedefs %} + + + + + {%- endfor %} + +
CURIEName
{{ typedef.curie }}{% if typedef.name %}{{ typedef.name }}{% endif %}
+
+ {% endif %} + {% if manifest %}
@@ -85,7 +109,7 @@
{% if term.is_metadata_tag %} Property {% else %} - {{ term.__class__.__name__ }} + {{ term.type }} {% endif %} {{ term.identifier }} @@ -96,16 +120,5 @@
- {% elif obo.typedefs %} -
-
- Relation Definitions -
- -
{% endif %} {%- endblock content %} diff --git a/src/pyobo/ssg/term.html b/src/pyobo/ssg/term.html index 60fa53c5..e6bde377 100644 --- a/src/pyobo/ssg/term.html +++ b/src/pyobo/ssg/term.html @@ -2,6 +2,16 @@ {% block title %}{{ term.name or term.identifier }}{% endblock title %} +{% macro display_value(v) %} + {% if v.prefix %} + {{ v.curie }} + {% elif v.datatype.identifier == "anyURI" %} + {{ v.value }} + {% else %} + {{ v.value }} + {% endif %} +{% endmacro %} + {% block content -%}
@@ -69,11 +79,11 @@
{% if values|length == 1 %} - {{ values[0] }} + {{ display_value(values[0]) }} {% else %}
    {% for value in values %} -
  • {{ value }}
  • +
  • {{ display_value(value) }}
  • {% endfor %}
{% endif %}