Hugo uses Golang’s fmt.Sprintf
to format strings.
{{ $var := "world" }}
{{ printf "Hello %s." $var }} {{/* Hello world. */}}
While we mostly need standard options such as %s
(print as string), %d
(integer), $f
(float), and so on, there are some other options that are useful in Hugo.
For example, the following code prints the value in a Go-syntax:
{{ $var := dict "this" 1 "that" 2 }}
{{ printf "%#v" $var }} {{/* map[string]interface {}{"that":2, "this":1} */}}
Dynamic character using %c
The %c
option prints a character corresponding to the given Unicode code point. Using this option, we can create a simple shortcode that converts hex to character.
{{ .Get 0 | int | printf "%c" }}
Using this shortcode, we can print a character using its Unicode code point:
{{< unicode 0x1F4A9 >}} {{/* 💩 */}}
Here is another example. Say we want to print a circled number. We know that U+2460
corresponds to ①, and U+2461
corresponds to ②, and so on, so we construct the following logic:
{{ $num := 4 }}
{{ $code := add 0x245F $num }} {{/* U+2463 */}}
{{ printf "%c" $code }} {{/* ④ */}}