1
0
Fork 0
hugo/tpl/tplimpl/embedded/templates/shortcodes/qr.html

80 lines
2.9 KiB
HTML

{{- /*
Encodes the given text into a QR code using the specified options and renders the resulting image.
@param {string} text The text to encode, falling back to the text between the opening and closing shortcode tags.
@param {string} [level=medium] The error correction level to use when encoding the text, one of low, medium, quartile, or high.
@param {int} [scale=4] The number of image pixels per QR code module. Must be greater than or equal to 2.
@param {string} [targetDir] The subdirectory within the publishDir where Hugo will place the generated image.
@param {string} [alt] The alt attribute of the img element.
@param {string} [class] The class attribute of the img element.
@param {string} [id] The id attribute of the img element.
@param {string} [title] The title attribute of the img element.
@param {string} [loading] The loading attribute of the img element, one of lazy or eager.
@returns {template.HTML}
@examples
{{< qr text="https://gohugo.io" />}}
{{< qr >}}
https://gohugo.io"
{{< /qr >}}
{{< qr
text="https://gohugo.io"
level="high"
scale=4
targetDir="codes"
alt="QR code linking to https://gohugo.io"
class="my-class"
id="my-id"
title="My Title"
/>}}
*/}}
{{- /* Constants. */}}
{{- $validLevels := slice "low" "medium" "quartile" "high" }}
{{- $minimumScale := 2 }}
{{- /* Get arguments. */}}
{{- $text := or (.Get "text") (strings.TrimSpace .Inner) "" }}
{{- $level := or (.Get "level") "medium" }}
{{- $scale := or (.Get "scale") 4 }}
{{- $targetDir := or (.Get "targetDir") "" }}
{{- $alt := or (.Get "alt") "" }}
{{- $class := or (.Get "class") "" }}
{{- $id := or (.Get "id") "" }}
{{- $title := or (.Get "title") "" }}
{{- $loading := or (.Get "loading") "" }}
{{- /* Validate arguments. */}}
{{- $errors := false}}
{{- if not $text }}
{{- errorf "The %q shortcode requires a %q argument. See %s" .Name "text" .Position }}
{{- $errors = true }}
{{- end }}
{{- if not (in $validLevels $level) }}
{{- errorf "The %q argument passed to the %q shortcode must be one of %s. See %s" "level" .Name (delimit $validLevels ", " ", or ") .Position }}
{{- $errors = true }}
{{- end }}
{{- if or (lt $scale $minimumScale) (ne $scale (int $scale)) }}
{{- errorf "The %q argument passed to the %q shortcode must be an integer greater than or equal to %d. See %s" "scale" .Name $minimumScale .Position }}
{{- $errors = true }}
{{- end }}
{{- /* Render image. */}}
{{- if not $errors }}
{{- $opts := dict "level" $level "scale" $scale "targetDir" $targetDir }}
{{- with images.QR $text $opts -}}
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}"
{{- with $alt }} alt="{{ $alt }}" {{- end }}
{{- with $class }} class="{{ $class }}" {{- end }}
{{- with $id }} id="{{ $id }}" {{- end }}
{{- with $title }} title="{{ $title }}" {{- end -}}
{{- with $loading }} loading="{{ $loading }}" {{- end -}}
>
{{- end }}
{{- end -}}