mirror of https://github.com/gohugoio/hugo
80 lines
2.9 KiB
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 -}}
|