diff --git a/spec_parser/model.py b/spec_parser/model.py index 535e7b8..09b178e 100644 --- a/spec_parser/model.py +++ b/spec_parser/model.py @@ -125,6 +125,14 @@ def _tsort_recursive(inh, cn, visited, stack): c.inheritance_stack.append(pcn) pcn = self.classes[pcn].fqsupercname + # add direct subclasses + for c in self.classes.values(): + c.direct_subclasses = [] + for c in self.classes.values(): + if c.fqsupercname: + parent = self.classes[c.fqsupercname] + parent.direct_subclasses.append(c.fqname) + # add inherited properties to classes for cn in stack: c = self.classes[cn] diff --git a/spec_parser/templates/mkdocs/class.md.j2 b/spec_parser/templates/mkdocs/class.md.j2 index f47c063..628a0e7 100644 --- a/spec_parser/templates/mkdocs/class.md.j2 +++ b/spec_parser/templates/mkdocs/class.md.j2 @@ -22,6 +22,13 @@ {% endif %} {% endfor %} +{% if direct_subclasses %} +## Direct subclasses + +{% for subclass in direct_subclasses | sort %} +- {{type_link(subclass)}} +{% endfor %} +{% endif %} {% endblock %} {% block extra %} diff --git a/spec_parser/templates/singlefile/class.md.j2 b/spec_parser/templates/singlefile/class.md.j2 index c584ef0..fe43006 100644 --- a/spec_parser/templates/singlefile/class.md.j2 +++ b/spec_parser/templates/singlefile/class.md.j2 @@ -19,6 +19,13 @@ {% endif %} {% endfor %} +{% if direct_subclasses %} +#### Direct subclasses + +{% for subclass in direct_subclasses | sort %} +- {{subclass}} +{% endfor %} +{% endif %} {% endblock %} {% block extra %} diff --git a/spec_parser/templates/tex/class.tex.j2 b/spec_parser/templates/tex/class.tex.j2 index 97568f9..3c2ec9a 100644 --- a/spec_parser/templates/tex/class.tex.j2 +++ b/spec_parser/templates/tex/class.tex.j2 @@ -20,6 +20,15 @@ {% endfor %} \end{itemize} {% endif %} +{%if direct_subclasses %} +\spdxpagepart{Direct subclasses} +\begin{itemize} +\tightlist +{% for subclass in direct_subclasses | sort %} +\item {{subclass}} +{% endfor %} +\end{itemize} +{% endif %} {% endblock %} {% block extra %}