<!-- Make sure that we are enclosed within a tabpane shortcode block -->
{{ with $.Parent }}
{{- if ne $.Parent.Name "tabpane" -}}
{{- errorf "tab must be used within a tabpane block" -}}
{{- end -}}
{{- end -}}

<!-- Prefill header if not given as parameter -->
{{ $header := default (printf "Tab %v" ( add $.Ordinal 1)) (.Get "header") }}

<!-- store all tab info in dict tab -->
{{ $tab := dict "header" $header }}
{{ with $.Get "lang" }}
{{ $tab = merge $tab (dict "language" ($.Get "lang")) }}
{{ end }}
{{ with $.Get "highlight" }}
{{ $tab = merge $tab (dict "highlight" ($.Get "highlight")) }}
{{ end }}
{{ with $.Inner }}
<!-- Trim any leading and trailing newlines from .Inner, this avoids
     spurious lines during syntax highlighting -->
{{ $tab = merge $tab (dict "content" (trim $.Inner "\n")) }}
{{ end }}

<!-- add dict tab to parent's scratchpad -->
{{ with .Parent }}
{{- $.Parent.Scratch.SetInMap "tabs" (printf "%v" $.Ordinal) $tab -}}
{{ end }}