2020-04-06 20:13:35 +02:00
|
|
|
{{- /*
|
|
|
|
Usage: `scss-docs name="name" file="file/_location.scss"`
|
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
Prints everything between `// scss-docs-start "name"` and `// scss-docs-end "name"`
|
|
|
|
comments in the docs.
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
Optional parameters:
|
|
|
|
* strip-default: Remove the ` !default` flag from variable assignments - default: `true`
|
2020-04-06 20:13:35 +02:00
|
|
|
*/ -}}
|
|
|
|
|
|
|
|
{{- $name := .Get "name" -}}
|
|
|
|
{{- $file := .Get "file" -}}
|
|
|
|
{{- $strip_default := .Get "strip-default" | default "true" -}}
|
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- /* If any parameters are missing, print an error and exit */ -}}
|
|
|
|
{{- if or (not $name) (not $file) -}}
|
|
|
|
{{- errorf "%s: %q: Missing required parameters! Got: name=%q file=%q!" .Position .Name $name $file -}}
|
|
|
|
{{- else -}}
|
|
|
|
{{- $capture_start := printf "// scss-docs-start %s\n" $name -}}
|
|
|
|
{{- $capture_end := printf "// scss-docs-end %s" $name -}}
|
|
|
|
{{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- /*
|
|
|
|
TODO: figure out why we can't do the following and get the first group (the only capturing one)...
|
|
|
|
$regex := printf `(?:// scss-docs-start %s\n)((?:.|\n)*)(?:\n// scss-docs-end %s)` $name $name
|
|
|
|
*/ -}}
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- $match := findRE $regex (readFile $file) -}}
|
|
|
|
{{- $match = index $match 0 -}}
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- if not $match -}}
|
|
|
|
{{- errorf "%s: %q: Got no matches for name=%q in file=%q!" .Position .Name $name $file -}}
|
|
|
|
{{- end -}}
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- $match = replace $match $capture_start "" -}}
|
|
|
|
{{- $match = replace $match $capture_end "" -}}
|
2020-04-06 20:13:35 +02:00
|
|
|
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- if (ne $strip_default "false") -}}
|
|
|
|
{{- $match = replace $match " !default" "" -}}
|
|
|
|
{{- end -}}
|
|
|
|
|
2023-04-27 00:57:27 +02:00
|
|
|
<div class="bd-example-snippet bd-code-snippet bd-file-ref">
|
2023-01-17 03:57:24 +01:00
|
|
|
<div class="d-flex align-items-center highlight-toolbar ps-3 pe-2 py-1 border-bottom">
|
2023-03-08 12:34:10 +01:00
|
|
|
<a class="font-monospace link-secondary link-underline-secondary link-underline-opacity-0 link-underline-opacity-100-hover small" href="{{ .Site.Params.repo }}/blob/v{{ .Site.Params.current_version }}/{{ $file | replaceRE `\\` "/" }}">
|
2023-01-17 03:57:24 +01:00
|
|
|
{{- $file -}}
|
|
|
|
</a>
|
|
|
|
<div class="d-flex ms-auto">
|
|
|
|
<button type="button" class="btn-clipboard mt-0 me-0" title="Copy to clipboard">
|
|
|
|
<svg class="bi" aria-hidden="true"><use xlink:href="#clipboard"/></svg>
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
2023-03-24 15:11:22 +01:00
|
|
|
{{- $unindent := 0 -}}
|
|
|
|
{{- $found := false -}}
|
|
|
|
{{- $first_line:= index (split $match "\n") 0 -}}
|
|
|
|
{{- range $char := split $first_line "" -}}
|
|
|
|
{{- if and (eq $char " ") (not $found) -}}
|
|
|
|
{{- $unindent = add $unindent 1 -}}
|
|
|
|
{{- else -}}
|
|
|
|
{{- $found = true -}}
|
|
|
|
{{- end -}}
|
|
|
|
{{- end -}}
|
|
|
|
{{- $output := "" -}}
|
|
|
|
{{- if (gt $unindent 0) -}}
|
|
|
|
{{- $prefix := (strings.Repeat $unindent " ") -}}
|
|
|
|
{{- range $line := split $match "\n" -}}
|
|
|
|
{{- $line = strings.TrimPrefix $prefix $line -}}
|
|
|
|
{{ $output = printf "%s%s\n" $output $line }}
|
|
|
|
{{- end -}}
|
|
|
|
{{- $output = chomp $output -}}
|
|
|
|
{{- else -}}
|
|
|
|
{{- $output = $match -}}
|
|
|
|
{{- end -}}
|
|
|
|
{{- highlight $output "scss" "" -}}
|
2023-01-17 03:57:24 +01:00
|
|
|
</div>
|
2021-01-13 08:34:52 +01:00
|
|
|
{{- end -}}
|