-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclass.md.jinja2
116 lines (90 loc) · 3.59 KB
/
class.md.jinja2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<!-- Jinja2 template based on https://github.com/linkml/linkml/blob/main/linkml/generators/docgen/class.md.jinja2 -->
<!-- This file should be periodically checked against the original source -->
<!-- Last check 25 August 2023 -->
# Class: {{ gen.name(element) }}
{%- if header -%}
{{header}}
{%- endif -%}
{% if element.description %}
{% set element_description_lines = element.description.split('\n') %}
{% for element_description_line in element_description_lines %}
_{{ element_description_line }}_
{% endfor %}
{% endif %}
{% if element.abstract %}
* __NOTE__: this is an abstract class and should not be instantiated directly
{% endif %}
URI: {{ gen.uri_link(element) }}
{% if diagram_type == "er_diagram" %}
```{{ gen.mermaid_directive() }}
{{ gen.mermaid_diagram([element.name]) }}
```
{% else %}
{% include "class_diagram.md.jinja2" %}
{% endif %}
{% if schemaview.class_parents(element.name) or schemaview.class_children(element.name, mixins=False) %}
## Inheritance
{{ gen.inheritance_tree(element, mixins=True) }}
{% else %}
<!-- no inheritance hierarchy -->
{% endif %}
## Properties
{% macro slots_table(heading, slots) -%}
{% if slots | length > 0 %}
### {{ heading }} Properties
| Name | Range | Description | Cardinality |
| --- | --- | --- | --- |
{% for slot in slots -%}
| {{gen.link(slot)}} | {{ gen.link(slot.range) }}{% if slot.minimum_value is not none %}<br/>Minimum Value: {{ slot.minimum_value|int }}{% endif %}{% if slot.maximum_value is not none %}<br/>Maximum Value: {{ slot.maximum_value|int }}{% endif %}{% if slot.pattern %}<br/>Regex pattern: {{ '`' }}{{ slot.pattern }}{{ '`' }}{% endif %} | {{ slot.description|enshorten }} | {% if slot.multivalued %}Many{% else %}One{% endif %} |
{% endfor %}
{% endif %}
{%- endmacro %}
{% set slots = schemaview.class_induced_slots(element.name) | rejectattr("required", "none") | rejectattr("required", "false") | sort(attribute='name') -%}
{{ slots_table("Mandatory", slots) }}
{% set slots = schemaview.class_induced_slots(element.name) | rejectattr("recommended", "none") | rejectattr("recommended", "false") | sort(attribute='name') -%}
{{ slots_table("Recommended", slots) }}
{% set slots = schemaview.class_induced_slots(element.name) | rejectattr("required") | rejectattr("recommended") | sort(attribute='name') -%}
{{ slots_table("Optional", slots) }}
{% if schemaview.is_mixin(element.name) %}
## Mixin Usage
| mixed into | description |
| --- | --- |
{% for c in schemaview.class_children(element.name, is_a=False) -%}
| {{ gen.link(c) }} | {{ schemaview.get_class(c).description|enshorten }} |
{% endfor %}
{% endif %}
{% if schemaview.usage_index().get(element.name) %}
## Usages
| used by | used in | type | used |
| --- | --- | --- | --- |
{% for usage in schemaview.usage_index().get(element.name) -%}
| {{gen.link(usage.used_by)}} | {{gen.link(usage.slot)}} | {{usage.metaslot}} | {{ gen.link(usage.used) }} |
{% endfor %}
{% endif %}
{% include "common_metadata.md.jinja2" %}
{% if schemaview.get_mappings(element.name).items() -%}
## Mappings
| Mapping Type | Mapped Value |
| --- | --- |
{% for m, mt in schemaview.get_mappings(element.name).items() -%}
{% if mt|length > 0 -%}
| {{ m }} | {{ mt|join(', ') }} |
{% endif -%}
{% endfor %}
{% endif -%}
{% if gen.example_object_blobs(element.name) -%}
## Examples
{% for name, blob in gen.example_object_blobs(element.name) -%}
- [{{name}}](assets/examples/{{name}}.yaml.json)
<!-- Commenting out code that displays example inline as a yaml block
### Example: {{name}}
```yaml
{{ blob }}
```
-->
{% endfor %}
{% endif %}
{% include "feedback_footer.md.jinja2" %}
{%- if footer -%}
{{footer}}
{%- endif -%}