hugo/docs/content/functions/len.md
2017-07-18 10:33:58 +02:00

2 KiB

title linktitle description godocref date publishdate lastmod categories signature workson hugoversion relatedfuncs deprecated toc aliases
len len Returns the length of a variable according to its type. https://golang.org/pkg/builtin/#len 2017-02-01 2017-02-01 2017-04-18
functions
len INPUT
lists
taxonomies
terms
false false

len is a built-in function in Golang that returns the length of a variable according to its type. From the Golang documentation:

Array: the number of elements in v.

Pointer to array: the number of elements in *v (even if v is nil).

Slice, or map: the number of elements in v; if v is nil, len(v) is zero.

String: the number of bytes in v.

Channel: the number of elements queued (unread) in the channel buffer; if v is nil, len(v) is zero.

len is also considered a fundamental function for Hugo templating.

len Example 1: Longer Headings

You may want to append a class to a heading according to the length of the string therein. The following templating checks to see if the title's length is greater than 80 characters and, if so, adds a long-title class to the <h1>:

{{% code file="check-title-length.html" %}}

<header>
    <h1{{if gt (len .Title) 80}} class="long-title"{{end}}>{{.Title}}</h1>
</header>

{{% /code %}}

len Example 2: Counting Pages with where

The following templating uses where in conjunction with len to figure out the total number of content pages in a posts section:

{{% code file="how-many-posts.html" %}}

{{ $posts := (where .Site.RegularPages "Section" "==" "post") }}
{{ $postCount := len $posts }}

{{% /code %}}

Note the use of .RegularPages, a site variable that counts all regular content pages but not the _index.md pages used to add front matter and content to list templates.