Skip to main content

Theme functions


The theme functions are a way to customize the look and add some logic to your CV Theme. You can use them in your theme template to help you display the content of your CV.

Functions​

inc - Increment a number​

The inc function is used to increment a number. It can also be used to get the next item of a list.

CodeOutput
{{ inc 5 }}6
{{ inc 0 }}1
{{ inc $length }}$length + 1

dec - Decrement a number​

The dec function is used to decrement a number. It can also be used to get the last item of a list.

CodeOutput
{{ dec 5 }}4
{{ dec 0 }}-1
{{ dec $length }}$length - 1
Last item of a list
{{ $list := (list "a" "b" "c") }}
{{ index $list (dec (len $list)) }}

This code will output c.

list - Create a list​

The list function is used to create a list of items.

CodeOutput
{{ list 1 2 3 }}[1 2 3]
{{ list "a" "b" "c" }}[a b c]
{{ list "CV" "Wonder" }}[CV Wonder]

join - Concatenate strings​

The join function is used to concatenate a list of strings without or with a separator.

CodeOutput
{{ join (list "CV" "Wonder") "" }}CVWonder
{{ join (list "CV" "Wonder") " " }}CV Wonder
{{ join (list "a" "b" "c") " " }}a b c
{{ join (list "1" "2" "3") "-" }}1-2-3

split - Split a string​

The split function is used to split a string into a list of substrings.

CodeOutput
{{ split "CV Wonder" " " }}[CV Wonder]
{{ split "CV-Wonder" "-" }}[CV Wonder]
{{ split "1-2-3" "-" }}[1 2 3]

trim - Remove leading/trailing whitespaces​

The trim function is used to remove leading and trailing whitespace from a string.

CodeOutput
{{ trim " CV Wonder " }}CV Wonder
{{ trim " CV Wonder " }}CV Wonder
{{ trim " CV Wonder " }}CV Wonder

lower - String to lowercase​

The lower function is used to convert a string to lowercase.

CodeOutput
{{ lower "CV Wonder" }}cv wonder
{{ lower "CVWONDER" }}cvwonder
{{ lower "cv wonder" }}cv wonder

upper - String to uppercase​

The upper function is used to convert a string to uppercase.

CodeOutput
{{ upper "CV Wonder" }}CV WONDER
{{ upper "cvwonder" }}CVWONDER
{{ upper "cv wonder" }}CV WONDER
{{ upper "CV WONDER" }}CV WONDER

replace - Replace a substring​

The replace function is used to replace a substring in a string.

CodeOutput
{{ replace "Hello World" "World" "CV Wonder" }}Hello CV Wonder
{{ replace "Hello World" "World" "" }}Hello

odd - Check if a number is odd​

The odd function is used to check if a number is odd.

CodeOutput
{{ odd 1 }}true
{{ odd 2 }}false
{{ odd 3 }}true

even - Check if a number is even​

The even function is used to check if a number is even.

CodeOutput
{{ even 1 }}false
{{ even 2 }}true
{{ even 3 }}false

add - Add two numbers​

The add function is used to add two numbers.

CodeOutput
{{ add 1 2 }}3
{{ add 2 3 }}5
{{ add 10 2 }}12

sub - Subtract two numbers​

The sub function is used to subtract two numbers.

CodeOutput
{{ sub 1 2 }}-1
{{ sub 2 3 }}-1
{{ sub 10 2 }}8

qrCode - Generate an inline QR code​

The qrCode function generates a QR code from a URL and returns an HTML <img> tag with the image embedded as a PNG base64 data URI. The QR code is produced at render time — no network requests, no external files. It works in both HTML and PDF output.

Returns an empty string when url is empty, so it is safe to call directly against model fields.

Signature:

{{ qrCode <url> [options...] }}

Options are "key=value" strings passed after the URL:

OptionDescriptionDefaultValues
sizePixels per QR cell5Integer (1–255)
fgForeground (module) color#000000Hex color (#RRGGBB)
bgBackground color#ffffffHex color (#RRGGBB)
ecError correction levelML (7%) / M (15%) / Q (25%) / H (30%)
Total image size

size sets the width of each individual QR cell in pixels, not the total image width. The total size depends on the URL length (longer URLs require a higher QR version and more cells). For pixel-perfect layouts, wrap the output in a fixed-size <div> controlled by CSS.

CodeDescription
{{ qrCode .Person.Site }}QR code with all defaults
{{ qrCode .Person.Site "size=6" }}Larger cells
{{ qrCode .Person.Site "fg=#0077b5" }}Blue modules (LinkedIn brand color)
{{ qrCode .Person.Site "bg=#f5f5f5" }}Light grey background
{{ qrCode .Person.Site "ec=H" }}Highest error correction (30%)

Typical usage in a theme:

{{/* Portfolio QR code in the header — only shown when a site URL is set */}}
{{ if .Person.Site }}
<div class="qr-contact">
{{ qrCode .Person.Site "size=5" "fg=#333333" }}
<span>Portfolio</span>
</div>
{{ end }}

{{/* LinkedIn QR code with brand color in the sidebar */}}
{{ if .SocialNetworks.Linkedin }}
{{ qrCode (printf "https://linkedin.com/in/%s" .SocialNetworks.Linkedin) "size=5" "fg=#0077b5" }}
{{ end }}

{{/* High error correction for a small QR in a logo-heavy layout */}}
{{ qrCode .Person.Site "size=4" "fg=#222222" "ec=H" }}
PDF support

QR codes generated by qrCode are embedded as data URIs and render correctly in PDF output produced by cvwonder generate --export=pdf.

Missing functions​

If you need a function that is not available in CV Wonder, you can ask us to add it on Github Issues. We will be happy to help you.