{{/* Renders a single event, given: * `event_name`: the name to use for the event * `event_data`: the event specification * `desired_example_name` (optional): the exact name of the examples to render. If `desired_example_name` is omitted we render all examples whose names start with the `event_name`. * `title` (optional): the title to display. May contain markdown. Defaults to `event_name` wrapped in a element. */}} {{ $event_name := .event_name }} {{ $desired_example_name := .desired_example_name }} {{ $event_data := .event_data }}

{{ with .title }}{{ . | markdownify }}{{ else }}{{ $event_name }}{{ end }}


{{ if (index $event_data "x-addedInMatrixVersion") }} {{ partial "added-in" (dict "v" (index $event_data "x-addedInMatrixVersion")) }} {{ end }} {{ if (index $event_data "x-changedInMatrixVersion") }} {{ partial "changed-in" (dict "changes_dict" (index $event_data "x-changedInMatrixVersion")) }} {{ end -}} {{ $event_data.description | markdownify }} {{ $state_key := index $event_data.properties "state_key" }} {{ if $state_key }} {{ end }}
Event type: {{ if $state_key }}State event{{ else }}Message event{{ end }}
State key {{ $state_key.description | markdownify }}

Content

{{ $anchor_base := anchorize $event_name }} {{ $additional_types := partial "json-schema/resolve-additional-types" (dict "schema" $event_data.properties.content "anchor_base" $anchor_base ) }} {{ range $additional_types }} {{ partial "openapi/render-object-table" . }} {{end}}

Examples

{{ $all_examples := index site.Data "event-schemas" "examples" }} {{ range $example_name, $example := $all_examples }} {{/* This is to allow the msgtype template to work. It lets callers specify exactly the name of the example they want */}} {{ if $desired_example_name }} {{ if eq $example_name $desired_example_name }} {{ partial "events/example" (dict "schema" $example "name" $example_name) }} {{ end }} {{/* If `$desired_example_name` is not given, we will include any example that is equal to the event name. Normally, this would be handled by the case below, but that case does not work if the event name includes a "$". */}} {{ else if eq $event_name $example_name }} {{ partial "events/example" (dict "schema" $example "name" $example_name) }} {{/* If `$desired_example_name` is not given, we will include any examples whose first part (before "$") matches the event name */}} {{ else }} {{ $pieces := split $example_name "$" }} {{ $example_base_name := index $pieces 0 }} {{ if eq $event_name $example_base_name }} {{ partial "events/example" (dict "schema" $example "name" $example_name) }} {{ end }} {{ end }} {{ end }}