Files
HugoBlox-kit/modules/wowchemy/layouts/shortcodes/table.html
T

52 lines
1.5 KiB
HTML

{{/* Table Shortcode for Wowchemy. */}}
{{/* Load a CSV table from page dir falling back back to remote URL */}}
{{/* Defaults to expecting a comma-separated CSV with a header row. */}}
{{/*
Docs: https://wowchemy.com/docs/content/writing-markdown-latex/#csv-table
Parameters
----------
src :
Path or url to the csv table. Path is relative to the folder where the shortcode is called.
delimiter : default ","
Field delimiter.
header : default "true"
If "true", the first row is rendered as the header.
caption : optional
Caption for the table.
*/}}
{{ $src := .Get "path" }}
{{ $delimiter := .Get "delimiter" | default "," }}
{{ $useHeaderRow := (eq (lower (.Get "header")) "true") | default true }}
{{ $caption := .Get "caption" }}
{{ $is_remote := strings.HasPrefix $src "http" }}
{{ if not $is_remote }}
{{ $src = path.Join "content" $.Page.File.Dir $src }}
{{ end }}
{{ $rows := getCSV $delimiter $src }}
<table class="table">
{{ if $useHeaderRow }}
{{ $headerRow := index $rows 0 }}
{{ $rows = after 1 $rows }}
<tr> {{ range $headerRow }} <th>{{ . | markdownify | emojify }}</th> {{ end }} </tr>
{{ end }}
{{ range $rows }}
<tr>
{{ range . }}
{{ if (findRE "^\\d+$" .) }}
<td data-table-dtype="number">{{ . }}</td>
{{ else }}
<td data-table-dtype="text">{{ . | markdownify | emojify }}</td>
{{ end }}
{{ end }}
</tr>
{{ end }}
{{ if $caption }}
<caption>{{ $caption | markdownify | emojify }}</caption>
{{ end }}
</table>