package collections
import "github.com/gohugoio/hugo/tpl/collections"
Package collections provides template functions for manipulating collections such as arrays, maps, and slices.
Index ¶
- type Namespace
- func New(deps *deps.Deps) *Namespace
- func (ns *Namespace) After(n any, l any) (any, error)
- func (ns *Namespace) Append(args ...any) (any, error)
- func (ns *Namespace) Apply(ctx context.Context, c any, fname string, args ...any) (any, error)
- func (ns *Namespace) Complement(ls ...any) (any, error)
- func (ns *Namespace) Delimit(ctx context.Context, l, sep any, last ...any) (string, error)
- func (ns *Namespace) Dictionary(values ...any) (map[string]any, error)
- func (ns *Namespace) First(limit any, l any) (any, error)
- func (ns *Namespace) Group(key any, items any) (any, error)
- func (ns *Namespace) In(l any, v any) (bool, error)
- func (ns *Namespace) Index(item any, args ...any) (any, error)
- func (ns *Namespace) Intersect(l1, l2 any) (any, error)
- func (ns *Namespace) IsSet(c any, key any) (bool, error)
- func (ns *Namespace) KeyVals(key any, values ...any) (types.KeyValues, error)
- func (ns *Namespace) Last(limit any, l any) (any, error)
- func (ns *Namespace) Merge(params ...any) (any, error)
- func (ns *Namespace) NewScratch() *maps.Scratch
- func (ns *Namespace) Querify(params ...any) (string, error)
- func (ns *Namespace) Reverse(l any) (any, error)
- func (ns *Namespace) Seq(args ...any) ([]int, error)
- func (ns *Namespace) Shuffle(l any) (any, error)
- func (ns *Namespace) Slice(args ...any) any
- func (ns *Namespace) Sort(ctx context.Context, l any, args ...any) (any, error)
- func (ns *Namespace) SymDiff(s2, s1 any) (any, error)
- func (ns *Namespace) Union(l1, l2 any) (any, error)
- func (ns *Namespace) Uniq(l any) (any, error)
- func (ns *Namespace) Where(ctx context.Context, c, key any, args ...any) (any, error)
Types ¶
type Namespace ¶
type Namespace struct {
// contains filtered or unexported fields
}
Namespace provides template functions for the "collections" namespace.
func New ¶
New returns a new instance of the collections-namespaced template functions.
func (*Namespace) After ¶
After returns all the items after the first n items in list l.
func (*Namespace) Append ¶
Append appends args up to the last one to the slice in the last argument. This construct allows template constructs like this:
{{ $pages = $pages | append $p2 $p1 }}
Note that with 2 arguments where both are slices of the same type, the first slice will be appended to the second:
{{ $pages = $pages | append .Site.RegularPages }}
func (*Namespace) Apply ¶
Apply takes an array or slice c and returns a new slice with the function fname applied over it.
func (*Namespace) Complement ¶
Complement gives the elements in the last element of ls that are not in any of the others.
All elements of ls must be slices or arrays of comparable types.
The reasoning behind this rather clumsy API is so we can do this in the templates:
{{ $c := .Pages | complement $last4 }}
func (*Namespace) Delimit ¶
Delimit takes a given list l and returns a string delimited by sep. If last is passed to the function, it will be used as the final delimiter.
func (*Namespace) Dictionary ¶
Dictionary creates a new map from the given parameters by treating values as key-value pairs. The number of values must be even. The keys can be string slices, which will create the needed nested structure.
func (*Namespace) First ¶
First returns the first limit items in list l.
func (*Namespace) Group ¶
Group groups a set of items by the given key. This is currently only supported for Pages.
func (*Namespace) In ¶
In returns whether v is in the list l. l may be an array or slice.
func (*Namespace) Index ¶
Index returns the result of indexing its first argument by the following arguments. Thus "index x 1 2 3" is, in Go syntax, x[1][2][3]. Each indexed item must be a map, slice, or array.
Adapted from Go stdlib src/text/template/funcs.go.
We deviate from the stdlib mostly because of https://github.com/golang/go/issues/14751.
func (*Namespace) Intersect ¶
Intersect returns the common elements in the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices.
func (*Namespace) IsSet ¶
IsSet returns whether a given array, channel, slice, or map in c has the given key defined.
func (*Namespace) KeyVals ¶
KeyVals creates a key and values wrapper.
func (*Namespace) Last ¶
Last returns the last limit items in the list l.
func (*Namespace) Merge ¶
Merge creates a copy of the final parameter in params and merges the preceding parameters into it in reverse order.
Currently only maps are supported. Key handling is case insensitive.
func (*Namespace) NewScratch ¶
NewScratch creates a new Scratch which can be used to store values in a thread safe way.
func (*Namespace) Querify ¶
Querify returns a URL query string composed of the given key-value pairs, encoded and sorted by key.
func (*Namespace) Reverse ¶
Reverse creates a copy of the list l and reverses it.
func (*Namespace) Seq ¶
Seq creates a sequence of integers from args. It's named and used as GNU's seq.
Examples:
3 => 1, 2, 3 1 2 4 => 1, 3 -3 => -1, -2, -3 1 4 => 1, 2, 3, 4 1 -2 => 1, 0, -1, -2
func (*Namespace) Shuffle ¶
Shuffle returns list l in a randomized order.
func (*Namespace) Slice ¶
Slice returns a slice of all passed arguments.
func (*Namespace) Sort ¶
Sort returns a sorted copy of the list l.
func (*Namespace) SymDiff ¶
SymDiff returns the symmetric difference of s1 and s2. Arguments must be either a slice or an array of comparable types.
func (*Namespace) Union ¶
Union returns the union of the given sets, l1 and l2. l1 and l2 must be of the same type and may be either arrays or slices. If l1 and l2 aren't of the same type then l1 will be returned. If either l1 or l2 is nil then the non-nil list will be returned.
func (*Namespace) Uniq ¶
Uniq returns a new list with duplicate elements in the list l removed.
func (*Namespace) Where ¶
Where returns a filtered subset of collection c.
Source Files ¶
append.go apply.go collections.go complement.go index.go init.go merge.go querify.go reflect_helpers.go sort.go symdiff.go where.go
- Version
- v0.144.2 (latest)
- Published
- Feb 19, 2025
- Platform
- linux/amd64
- Imports
- 22 packages
- Last checked
- 7 hours ago –
Tools for package owners.