Add return type to functions

This commit is contained in:
Joe Mooring
2023-09-30 21:03:52 -07:00
committed by GitHub
parent 85ac3e7791
commit a3a40ff999
252 changed files with 2691 additions and 1762 deletions
+7 -4
View File
@@ -1,11 +1,14 @@
---
title: {{ replace .Name "-" " " | title }}
description: ""
signature: []
title: {{ replace .File.ContentBaseName "-" " " | title }}
description:
categories: [functions]
keywords: []
menu:
docs:
parent: functions
relatedfuncs: []
function:
aliases: []
returnType:
signatures: []
relatedFunctions: []
---
+2 -3
View File
@@ -1,6 +1,5 @@
---
title: "{{ replace .Name "-" " " | title }}"
description: ""
title: {{ replace .File.ContentBaseName "-" " " | title }}
description:
date: {{ .Date }}
---
+2 -3
View File
@@ -1,9 +1,9 @@
---
title: {{ replace .Name "-" " " | title }}
title: {{ replace .File.ContentBaseName "-" " " | title }}
date: {{ now.Format "2006-01-02" }}
description: "A short description of this page."
description: A short description of this page.
# The URL to the site on the internet.
siteURL: https://gohugo.io/
@@ -34,4 +34,3 @@ bio.md
featured.png
: A reasonably sized screenshot of your website. It can be named anything, but the name must start with "featured". The sample image is `1500x750` (2:1 aspect ratio).
+3 -3
View File
@@ -36,13 +36,13 @@ Hugo is for people building a blog, a company site, a portfolio site, documentat
[@spf13]: https://twitter.com/spf13
[Amazon S3]: https://aws.amazon.com/s3/
[Azure]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website
[CloudFront]: https://aws.amazon.com/cloudfront/ "Amazon CloudFront"
[CloudFront]: https://aws.amazon.com/cloudfront/
[DreamHost]: https://www.dreamhost.com/
[Firebase]: https://firebase.google.com/docs/hosting/ "Firebase static hosting"
[Firebase]: https://firebase.google.com/docs/hosting/
[GitHub Pages]: https://pages.github.com/
[GitLab Pages]: https://about.gitlab.com/features/pages/
[Go language]: https://go.dev/
[GoDaddy]: https://www.godaddy.com/ "GoDaddy.com Hosting"
[GoDaddy]: https://www.godaddy.com/
[Google Cloud Storage]: https://cloud.google.com/storage/
[Heroku]: https://www.heroku.com/
[Jekyll]: https://jekyllrb.com/
+1 -1
View File
@@ -68,7 +68,7 @@ If none of these exists, Hugo uses a built-in default archetype.
## Functions and context
You can use any [template function] within an archetype. As shown above, the default archetype uses the [`replace`](/functions/replace/) function to replace hyphens with spaces when populating the title in front matter.
You can use any [template function] within an archetype. As shown above, the default archetype uses the [`replace`](/functions/strings/replace) function to replace hyphens with spaces when populating the title in front matter.
Archetypes receive the following objects and values in [context]:
-1
View File
@@ -115,7 +115,6 @@ Markdown syntax is simple enough to learn in a single sitting. The following are
* [Markdown Tutorial (Interactive), Garen Torikian][mdtutorial]
* [The Markdown Guide, Matt Cone][mdguide]
[`emojify` function]: /functions/emojify/
[ascii]: https://asciidoctor.org/
[config]: /getting-started/configuration/
[developer tools]: /tools/
@@ -115,7 +115,7 @@ Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. U
The `Process` method is also available as a filter, which is more effective if need to apply multiple filters to an image. See [Process filter](/functions/images/#process).
{{% /note %}}
Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
See [Options](#image-processing-options) for available options.
@@ -501,11 +501,11 @@ If you change image processing methods or options, or if you rename or remove im
hugo --gc
```
[time.Format]: /functions/dateformat
[time.Format]: /functions/time/format
[`anchor`]: /content-management/image-processing#anchor
[mounted]: /hugo-modules/configuration#module-configuration-mounts
[page bundle]: /content-management/page-bundles
[`lang.FormatNumber`]: /functions/lang
[`lang.FormatNumber`]: /functions/lang/formatnumber
[filters]: /functions/images
[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
@@ -519,4 +519,4 @@ hugo --gc
[`Fit`]: #fit
[`Resize`]: #resize
[site configuration]: #processing-options
[`with`]: /functions/with/
[`with`]: /functions/go-template/with/
+12 -12
View File
@@ -468,7 +468,7 @@ English|Wednesday, November 3, 2021
Français|mercredi 3 novembre 2021
Deutsch|Mittwoch, 3. November 2021
See [time.Format] for details.
See [`time.Format`] for details.
### Currency
@@ -636,7 +636,7 @@ i18n|MISSING_TRANSLATION|en|wordCount
To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
* Come from the built-in `.Permalink` or `.RelPermalink`
* Be constructed with the [`relLangURL` template function][rellangurl] or the [`absLangURL` template function][abslangurl] **OR** be prefixed with `{{ .LanguagePrefix }}`
* Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
If there is more than one language defined, the `LanguagePrefix` variable will equal `/en` (or whatever your `CurrentLanguage` is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites).
@@ -657,23 +657,23 @@ hugo new content content/en/post/test.md
hugo new content content/de/post/test.md
```
[abslangurl]: /functions/abslangurl
[`abslangurl`]: /functions/urls/abslangurl
[config]: /getting-started/configuration/
[contenttemplate]: /templates/single-page-templates/
[go-i18n-source]: https://github.com/nicksnyder/go-i18n
[go-i18n]: https://github.com/nicksnyder/go-i18n
[homepage]: /templates/homepage/
[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
[i18func]: /functions/i18n/
[lang.FormatAccounting]: /functions/lang
[lang.FormatCurrency]: /functions/lang
[lang.FormatNumber]: /functions/lang
[lang.FormatNumberCustom]: /functions/lang
[lang.FormatPercent]: /functions/lang
[lang.Merge]: /functions/lang.merge/
[i18func]: /functions/lang/translate
[lang.FormatAccounting]: /functions/lang/formataccounting
[lang.FormatCurrency]: /functions/lang/formatcurrency
[lang.FormatNumber]: /functions/lang/formatnumber
[lang.FormatNumberCustom]: /functions/lang/formatnumbercustom
[lang.FormatPercent]: /functions/lang/formatpercent
[lang.Merge]: /functions/lang/merge/
[menus]: /content-management/menus/
[OS environment]: /getting-started/configuration/#configure-with-environment-variables
[rellangurl]: /functions/rellangurl
[`rellangurl`]: /functions/urls/rellangurl
[RFC 5646]: https://tools.ietf.org/html/rfc5646
[single page templates]: /templates/single-page-templates/
[time.Format]: /functions/dateformat
[`time.Format`]: /functions/time/format
+2 -2
View File
@@ -187,7 +187,7 @@ Rendered:
To specify one or more [highlighting options], include a quotation-encapsulated, comma-separated list:
[highlighting options]: /functions/highlight/
[highlighting options]: /functions/transform/highlight/
```text
{{</* highlight go-html-template "lineNos=inline, lineNoStart=42" */>}}
@@ -391,7 +391,7 @@ To learn more about creating custom shortcodes, see the [shortcode template docu
[`figure` shortcode]: #figure
[contentmanagementsection]: /content-management/formats/
[examplegist]: https://gist.github.com/spf13/7896402
[figureelement]: https://html5doctor.com/the-figure-figcaption-elements/ "An article from HTML5 doctor discussing the fig and figcaption elements."
[figureelement]: https://html5doctor.com/the-figure-figcaption-elements/
[Hugo and the GDPR]: /about/hugo-and-gdpr/
[Instagram]: https://www.instagram.com/
[pagevariables]: /variables/page/
@@ -92,7 +92,7 @@ Gives this:
## Highlight template function
See [Highlight](/functions/highlight/).
See [Highlight](/functions/transform/highlight/).
## Highlighting in code fences
+1 -2
View File
@@ -191,12 +191,11 @@ title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
{{< /code-toggle >}}
[`urlize` template function]: /functions/urlize/
[content section]: /content-management/sections/
[content type]: /content-management/types/
[documentation on archetypes]: /content-management/archetypes/
[front matter]: /content-management/front-matter/
[taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-list-templates
[taxonomy templates]: /templates/taxonomy-templates/
[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates "See how to order terms associated with a taxonomy"
[terms within the taxonomy]: /templates/taxonomy-templates/#taxonomy-terms-templates
[configuration]: /getting-started/configuration/
@@ -2,13 +2,15 @@
title: .AddDate
description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature: [.AddDate YEARS MONTHS DAYS]
function:
aliases: []
returnType: time.Time
signatures: [.AddDate YEARS MONTHS DAYS]
relatedFunctions: []
---
```go-html-template
+90
View File
@@ -0,0 +1,90 @@
---
title: .Format
description: Returns a formatted time.Time value.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType: string
signatures: [.Format LAYOUT]
relatedFunctions: []
toc: true
---
```go-template
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $format := "2 Jan 2006" }}
{{ $t.Format $format }} → 27 Jan 2023
```
{{% note %}}
To return a formatted and localized `time.Time` value, use the [`time.Format`] function instead.
[`time.Format`]: /functions/time/format
{{% /note %}}
Use the `.Format` method with any `time.Time` value, including the four predefined front matter dates:
```go-html-template
{{ $format := "2 Jan 2006" }}
{{ .Date.Format $format }}
{{ .PublishDate.Format $format }}
{{ .ExpiryDate.Format $format }}
{{ .Lastmod.Format $format }}
```
## Layout string
{{% readfile file="/functions/_common/time-layout-string.md" %}}
## Examples
Given this front matter:
{{< code-toggle fm=true copy=false >}}
title = "About time"
date = 2023-01-27T23:44:58-08:00
{{< /code-toggle >}}
The examples below were rendered in the `America/Los_Angeles` time zone:
Format string|Result
:--|:--
`Monday, January 2, 2006`|`Friday, January 27, 2023`
`Mon Jan 2 2006`|`Fri Jan 27 2023`
`January 2006`|`January 2023`
`2006-01-02`|`2023-01-27`
`Monday`|`Friday`
`02 Jan 06 15:04 MST`|`27 Jan 23 23:44 PST`
`Mon, 02 Jan 2006 15:04:05 MST`|`Fri, 27 Jan 2023 23:44:58 PST`
`Mon, 02 Jan 2006 15:04:05 -0700`|`Fri, 27 Jan 2023 23:44:58 -0800`
## UTC and local time
Convert and format any `time.Time` value to either Coordinated Universal Time (UTC) or local time.
```go-html-template
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $format := "2 Jan 2006 3:04:05 PM MST" }}
{{ $t.UTC.Format $format }} → 28 Jan 2023 7:44:58 AM UTC
{{ $t.Local.Format $format }} → 27 Jan 2023 11:44:58 PM PST
```
## Ordinal representation
Use the [`humanize`](/functions/inflect/humanize) function to render the day of the month as an ordinal number:
```go-html-template
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ humanize $t.Day }} of {{ $t.Format "January 2006" }} → 27th of January 2023
```
@@ -2,15 +2,17 @@
title: .Get
description: Accesses positional and ordered parameters in shortcode declaration.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .Get INDEX
- .Get KEY
function:
aliases: []
returnType: any
signatures:
- .Get INDEX
- .Get KEY
relatedFunctions: []
---
`.Get` is specifically used when creating your own [shortcode template][sc], to access the [positional and named](/templates/shortcode-templates/#positional-vs-named-parameters) parameters passed to it. When used with a numeric INDEX, it queries positional parameters (starting with 0). With a string KEY, it queries named parameters.
+6 -5
View File
@@ -2,14 +2,15 @@
title: .GetPage
description: Gets a `Page` of a given `path`.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .GetPage PATH
function:
aliases: []
returnType:
signatures: [.GetPage PATH]
relatedFunctions: []
---
`.GetPage` returns a page of a given `path`. Both `Site` and `Page` implements this method. The `Page` variant will, if given a relative path -- i.e. a path without a leading `/` -- try look for the page relative to the current page.
+35
View File
@@ -0,0 +1,35 @@
---
title: .HasMenuCurrent
description: Reports whether the given page object matches the page object associated with one of the child menu entries under the given menu entry in the given menu.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType: bool
signatures: [PAGE.HasMenuCurrent MENU MENUENTRY]
relatedFunctions:
- .HasMenuCurrent
- .IsMenuCurrent
---
If the page object associated with the menu entry is a section, this method also returns `true` for any descendant of that section.
```go-html-template
{{ $currentPage := . }}
{{ range site.Menus.main }}
{{ if $currentPage.IsMenuCurrent .Menu . }}
<a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
{{ else if $currentPage.HasMenuCurrent .Menu . }}
<a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
{{ else }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
{{ end }}
```
See [menu templates] for a complete example.
[menu templates]: /templates/menu-templates/#example
+33
View File
@@ -0,0 +1,33 @@
---
title: .IsMenuCurrent
description: Reports whether the given page object matches the page object associated with the given menu entry in the given menu.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType: bool
signatures: [PAGE.IsMenuCurrent MENU MENUENTRY]
relatedFunctions:
- .HasMenuCurrent
- .IsMenuCurrent
---
```go-html-template
{{ $currentPage := . }}
{{ range site.Menus.main }}
{{ if $currentPage.IsMenuCurrent .Menu . }}
<a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
{{ else if $currentPage.HasMenuCurrent .Menu . }}
<a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
{{ else }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
{{ end }}
```
See [menu templates] for a complete example.
[menu templates]: /templates/menu-templates/#example
@@ -2,14 +2,15 @@
title: .Param
description: Returns a page parameter, falling back to a site parameter if present.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .Param KEY
function:
aliases: []
returnType: any
signatures: [.Param KEY]
relatedFunctions: []
---
The `.Param` method on `.Page` looks for the given `KEY` in page parameters, and returns the corresponding value. If it cannot find the `KEY` in page parameters, it looks for the `KEY` in site parameters. If it cannot find the `KEY` in either location, the `.Param` method returns `nil`.
@@ -2,14 +2,15 @@
title: .Render
description: Takes a view to apply when rendering content.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .Render LAYOUT
function:
aliases: []
returnType: template.HTML
signatures: [.Render LAYOUT]
relatedFunctions: []
---
The view is an alternative layout and should be a file name that points to a template in one of the locations specified in the documentation for [Content Views](/templates/views).
+7 -7
View File
@@ -1,15 +1,15 @@
---
title: .RenderString
description: sRenders markup to HTML.
description: Renders markup to HTML.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .RenderString MARKUP [OPTIONS]
function:
aliases: []
returnType: template.HTML
signatures: ['.RenderString MARKUP [OPTIONS]']
---
`.RenderString` is a method on `Page` that renders some markup to HTML using the content renderer defined for that page (if not set in the options).
@@ -32,4 +32,4 @@ Some examples:
{{ "/italic org mode/" | $p.RenderString $optOrg }}
```
{{< new-in "0.93.0" >}} **Note**: [markdownify](/functions/markdownify/) uses this function in order to support [Render Hooks](/getting-started/configuration-markup/#markdown-render-hooks).
{{< new-in "0.93.0" >}} **Note**: [markdownify](/functions/transform/markdownify) uses this function in order to support [Render Hooks](/getting-started/configuration-markup/#markdown-render-hooks).
@@ -2,15 +2,17 @@
title: .Scratch
description: Acts as a "scratchpad" to store and manipulate data.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs:
function:
aliases: []
returnType:
signatures: []
relatedFunctions:
- .Store
- .Scratch
signature:
aliases: [/extras/scratch/,/doc/scratch/]
---
@@ -74,7 +76,7 @@ Get the value of a given key.
Add a given value to existing value(s) of the given key.
For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be [appended](/functions/append/) to that list.
For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be [appended](/functions/collections/append/) to that list.
```go-html-template
{{ $scratch.Add "greetings" "Hello" }}
@@ -2,15 +2,17 @@
title: .Store
description: Returns a Scratch that is not reset on server rebuilds.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs:
function:
aliases: []
returnType:
signatures: []
relatedFunctions:
- .Store
- .Scratch
signature:
---
The `.Store` method on `.Page` returns a [Scratch] to store and manipulate data. In contrast to the `.Scratch` method, this Scratch is not reset on server rebuilds.
+36
View File
@@ -0,0 +1,36 @@
---
title: .Unix
description: Converts a time.Time value to the number of seconds elapsed since the Unix epoch, excluding leap seconds. The Unix epoch is 00:00:00&nbsp;UTC on 1 January 1970.
categories: [functions]
menu:
docs:
parent: functions
function:
aliases: []
returnType: int64
signatures:
- .Unix
- .UnixMilli
- .UnixMicro
- .UnixNano
relatedFunctions: []
---
The `Milli`, `Micro`, and `Nano` variants return the number of milliseconds, microseconds, and nanoseconds (respectively) elapsed since the Unix epoch.
```go-html-template
.Date.Unix → 1637259694
.ExpiryDate.Unix → 1672559999
.Lastmod.Unix → 1637361786
.PublishDate.Unix → 1637421261
("1970-01-01T00:00:00-00:00" | time.AsTime).Unix → 0
("1970-01-01T00:00:42-00:00" | time.AsTime).Unix → 42
("1970-04-11T01:48:29-08:00" | time.AsTime).Unix → 8675309
("2026-05-02T20:09:31-07:00" | time.AsTime).Unix → 1777777771
now.Unix → 1637447841
now.UnixMilli → 1637447841347
now.UnixMicro → 1637447841347378
now.UnixNano → 1637447841347378799
```
@@ -0,0 +1,3 @@
See Go's [text/template] documentation for more details.
[text/template]: https://pkg.go.dev/text/template
+3
View File
@@ -0,0 +1,3 @@
Localization of dates, currencies, numbers, and percentages is performed by the [gohugoio/locales] package. The language tag of the current site must match one of the listed locales.
[gohugoio/locales]: https://github.com/gohugoio/locales
@@ -0,0 +1,42 @@
Format a `time.Time` value based on [Go's reference time]:
[Go's reference time]: https://pkg.go.dev/time#pkg-constants
```text {copy=false}
Mon Jan 2 15:04:05 MST 2006
```
Create a format string using these components:
Description|Valid components
:--|:--
Year|`"2006" "06"`
Month|`"Jan" "January" "01" "1"`
Day of the week|`"Mon" "Monday"`
Day of the month|`"2" "_2" "02"`
Day of the year|`"__2" "002"`
Hour|`"15" "3" "03"`
Minute|`"4" "04"`
Second|`"5" "05"`
AM/PM mark|`"PM"`
Time zone offsets|`"-0700" "-07:00" "-07" "-070000" "-07:00:00"`
Replace the sign in the format string with a Z to print Z instead of an offset for the UTC zone.
Description|Valid components
:--|:--
Time zone offsets|`"Z0700" "Z07:00" "Z07" "Z070000" "Z07:00:00"`
```go-html-template
{{ $t := "2023-01-27T23:44:58-08:00" }}
{{ $t = time.AsTime $t }}
{{ $t = $t.Format "Jan 02, 2006 3:04 PM Z07:00" }}
{{ $t }} → Jan 27, 2023 11:44 PM -08:00
```
Strings such as `PST` and `CET` are not time zones. They are time zone _abbreviations_.
Strings such as `-07:00` and `+01:00` are not time zones. They are time zone _offsets_.
A time zone is a geographic area with the same local time. For example, the time zone abbreviated by `PST` and `PDT` (depending on Daylight Savings Time) is `America/Los_Angeles`.
@@ -1,19 +1,21 @@
---
title: float
title: cast.ToFloat
linkTitle: float
description: Casts a value to a decimal (base 10) floating point value.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: cast
relatedFuncs:
function:
aliases: [float]
returnType: float64
signatures: [cast.ToFloat INPUT]
relatedFunctions:
- cast.ToFloat
- cast.ToInt
- cast.ToString
signature:
- cast.ToFloat INPUT
- float INPUT
aliases: [/functions/float]
---
With a decimal (base 10) input:
@@ -1,19 +1,21 @@
---
title: int
title: cast.ToInt
linkTitle: int
description: Casts a value to a decimal (base 10) integer.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: cast
relatedFuncs:
function:
aliases: [int]
returnType: int
signatures: [cast.ToInt INPUT]
relatedFunctions:
- cast.ToFloat
- cast.ToInt
- cast.ToString
signature:
- cast.ToInt INPUT
- int INPUT
aliases: [/functions/int]
---
With a decimal (base 10) input:
@@ -1,19 +1,21 @@
---
title: string
title: cast.ToString
linkTitle: string
description: Cast a value to a string.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: cast
relatedFuncs:
function:
aliases: [string]
returnType: string
signatures: [cast.ToString INPUT]
relatedFunctions:
- cast.ToFloat
- cast.ToInt
- cast.ToString
signature:
- cast.ToString INPUT
- string INPUT
aliases: [/functions/string]
---
With a decimal (base 10) input:
@@ -1,22 +1,24 @@
---
title: after
title: collections.After
linkTitle: after
description: Slices an array to the items after the Nth item.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [after]
returnType: any
signatures: [collections.After INDEX COLLECTION]
relatedFunctions:
- collections.After
- collections.First
- collections.Last
signature:
- collections.After INDEX COLLECTION
- after INDEX COLLECTION
aliases: [/functions/after]
---
The following shows `after` being used in conjunction with the [`slice` function][slice]:
The following shows `after` being used in conjunction with the [`slice`]function:
```go-html-template
{{ $data := slice "one" "two" "three" "four" }}
@@ -28,7 +30,7 @@ The following shows `after` being used in conjunction with the [`slice` function
## Example of `after` with `first`: 2nd&ndash;4th most recent articles
You can use `after` in combination with the [`first` function] and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page] to show only two rows:
You can use `after` in combination with the [`first`] function and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page] to show only two rows:
1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
2. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
@@ -58,7 +60,7 @@ You can use `after` in combination with the [`first` function] and Hugo's [power
{{ end }}
{{< /code >}}
[`first` function]: /functions/first/
[list/section page]: /templates/section-templates/
[`first`]: /functions/collections/first
[list/section page]: /templates/section-templates
[lists]: /templates/lists/#order-content
[slice]: /functions/slice/
[`slice`]: /functions/collections/slice/
@@ -1,21 +1,23 @@
---
title: append
title: collections.Append
linkTitle: append
description: Appends one or more elements to a slice and returns the resulting slice.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [append]
returnType: any
signatures:
- COLLECTION | collections.Append ELEMENT [ELEMENT]...
- COLLECTION | collections.Append COLLECTION
relatedFunctions:
- collections.Append
- collections.Merge
- collections.Slice
signature:
- COLLECTION | collections.Append ELEMENT [ELEMENT]...
- COLLECTION | collections.Append COLLECTION
- COLLECTION | append ELEMENT [ELEMENT]...
- COLLECTION | append COLLECTION
aliases: [/functions/append]
---
This function appends all elements, excluding the last, to the last element. This allows [pipe](/getting-started/glossary/#pipeline) constructs as shown below.
@@ -1,28 +1,30 @@
---
title: apply
title: collections.Apply
linkTitle: apply
description: Given an array or slice, `apply` returns a new slice with a function applied over it.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [apply]
returnType: any
signatures: ['collections.Apply COLLECTION FUNCTION [PARAM...]']
relatedFunctions:
- collections.Apply
- collections.Delimit
- collections.In
- collections.Reverse
- collections.Seq
- collections.Slice
signature:
- collections.Apply COLLECTION FUNCTION [PARAM...]
- apply COLLECTION FUNCTION [PARAM...]
aliases: [/functions/apply]
---
`apply` expects at least three arguments, depending on the function being applied.
1. The first argument is the sequence to operate on.
2. The second argument is the name of the function as a string, which must be the name of a valid [Hugo function][functions].
2. The second argument is the name of the function as a string, which must be the name of a valid [template function].
3. After that, the arguments to the applied function are provided, with the string `"."` standing in for each element of the sequence the function is to be applied against.
Here is an example of a content file with `names:` as a front matter field:
@@ -44,13 +46,13 @@ Which will result in the following:
"derek-perkins", "joe-bergevin", "tanner-linsley"
```
This is *roughly* equivalent to using the following with [range]:
This is *roughly* equivalent to using the following with [`range`]:
```go-html-template
{{ range .Params.names }}{{ . | urlize }}{{ end }}
```
However, it is not possible to provide the output of a range to the [`delimit` function][delimit], so you need to `apply` it.
However, it is not possible to provide the output of a range to the [`delimit`]function, so you need to `apply` it.
If you have `post-tag-list.html` and `post-tag-link.html` as [partials], you *could* use the following snippets, respectively:
@@ -92,7 +94,7 @@ This first version of `layouts/partials/post-tag-list.html` separates all of the
{{ end }}
```
Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [chomp] off stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
Now in the completed version, you can sort the tags, convert the tags to links with `layouts/partials/post-tag-link.html`, [`chomp`] stray newlines, and join the tags together in a delimited list for presentation. Here is an even DRYer version of the preceding example:
{{< code file="layouts/partials/post-tag-list.html" >}}
{{ with .Params.tags }}
@@ -107,8 +109,7 @@ Now in the completed version, you can sort the tags, convert the tags to links w
`apply` does not work when receiving the sequence as an argument through a pipeline.
{{% /note %}}
[chomp]: /functions/chomp/ "See documentation for the chomp function"
[delimit]: /functions/delimit/ "See documentation for the delimit function"
[functions]: /functions/ "See the full list of Hugo functions to see what can be passed as an argument to the apply function."
[partials]: /templates/partials/
[range]: /functions/range/ "Learn the importance of the range function, a fundamental keyword in both Hugo templates and the Go programming language."
[`chomp`]: /functions/strings/chomp/
[`delimit`]: /functions/collections/delimit/
[template function]: /functions/
[`range`]: /functions/go-template/range/
@@ -1,19 +1,22 @@
---
title: complement
title: collections.Complement
linkTitle: complement
description: Returns the elements of the last collection that are not in any of the others.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
namespace: collections
relatedFuncs:
function:
aliases: [complement]
returnType: any
signatures: ['collections.Complement COLLECTION [COLLECTION]...']
relatedFunctions:
- collections.Complement
- collections.Intersect
- collections.SymDiff
- collections.Union
signature:
- collections.Complement COLLECTION [COLLECTION]...
- complement COLLECTION [COLLECTION]...
aliases: [/functions/complement]
---
To find the elements within `$c3` that do not exist in `$c1` or `$c2`:
@@ -61,7 +64,7 @@ To list everything except blog articles (`blog`) and frequently asked questions
{{% note %}}
Although the example above demonstrates the `complement` function, you could use the [`where`] function as well:
[`where`]: /functions/where/
[`where`]: /functions/collections/where
{{% /note %}}
```go-html-template
@@ -1,13 +1,17 @@
---
title: delimit
title: collections.Delimit
linkTitle: delimit
description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [delimit]
returnType: template.HTML
signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]']
relatedFunctions:
- collections.Apply
- collections.Delimit
- collections.In
@@ -15,9 +19,7 @@ relatedFuncs:
- collections.Seq
- collections.Slice
- strings.Split
signature:
- collections.Delimit COLLECTION DELIMITER [LAST]
- delimit COLLECTION DELIMITER [LAST]
aliases: [/functions/delimit]
---
Delimit a slice:
@@ -1,21 +1,23 @@
---
title: dict
title: collections.Dictionary
linkTitle: dict
description: Creates a map from a list of key and value pairs.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [dict]
returnType: mapany
signatures: ['collections.Dictionary KEY VALUE [KEY VALUE]...']
relatedFunctions:
- collections.Dictionary
- collections.Group
- collections.Index
- collections.IsSet
- collections.Where
signature:
- collections.Dictionary KEY VALUE [KEY VALUE]...
- dict KEY VALUE [KEY VALUE]...
aliases: [/functions/dict]
---
`dict` is especially useful for passing more than one value to a partial template.
@@ -1,16 +1,18 @@
---
title: echoParam
title: collections.EchoParam
linkTitle: echoParam
description: Prints a parameter if it is set.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs: []
signature:
- collections.EchoParam COLLECTION KEY
- echoParam COLLECTION KEY
function:
aliases: [echoParam]
returnType: any
signatures: [collections.EchoParam COLLECTION KEY]
relatedFunctions: []
aliases: [/functions/echoparam]
---
For example, consider this site configuration:
@@ -1,19 +1,21 @@
---
title: first
title: collections.First
linkTitle: first
description: Slices an array to the first N elements.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [first]
returnType: any
signatures: [collections.First LIMIT COLLECTION]
relatedFunctions:
- collections.After
- collections.First
- collections.Last
signature:
- collections.First LIMIT COLLECTION
- first LIMIT COLLECTION
aliases: [/functions/first]
---
`first` works in a similar manner to the [`limit` keyword in
@@ -34,9 +36,9 @@ elements. It takes the array and number of elements as input.
## `first` and `where` Together
Using `first` and [`where`][wherefunction] together can be very
powerful. Below snippet gets a list of posts only from [**main
sections**][mainsections], sorts it by the `title` parameter, and then
Using `first` and [`where`] together can be very
powerful. Below snippet gets a list of posts only from [main
sections], sorts it by the `title` parameter, and then
ranges through only the first 5 posts in that list:
{{< code file="first-and-where-together.html" >}}
@@ -47,5 +49,5 @@ ranges through only the first 5 posts in that list:
[limitkeyword]: https://www.techonthenet.com/sql/select_limit.php
[wherefunction]: /functions/where/
[mainsections]: /functions/where/#mainsections
[`where`]: /functions/collections/where
[main sections]: /functions/collections/where#mainsections
@@ -1,21 +1,23 @@
---
title: group
description: "`group` groups a list of pages."
title: collections.Group
linkTitle: group
description: Groups a list of pages.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [group]
returnType: any
signatures: [PAGES | collections.Group KEY]
relatedFunctions:
- collections.Dictionary
- collections.Group
- collections.Index
- collections.IsSet
- collections.Where
signature:
- PAGES | collections.Group KEY
- PAGES | group KEY
aliases: [/functions/group]
---
{{< code file="layouts/partials/groups.html" >}}
+38
View File
@@ -0,0 +1,38 @@
---
title: collections.In
linkTitle: in
description: Reports whether an element is in an array or slice, or if a substring is in a string.
keywords: []
menu:
docs:
parent: functions
function:
aliases: [in]
returnType: bool
signatures: [collections.In SET ITEM]
relatedFunctions:
- collections.Slice
aliases: [/functions/in]
---
```go-html-template
{{ $s := slice "a" "b" "c" }}
{{ in $s "b" }} → true
```
```go-html-template
{{ $s := slice 1 2 3 }}
{{ in $s 2 }} → true
```
```go-html-template
{{ $s := slice 1.11 2.22 3.33 }}
{{ in $s 2.22 }} → true
```
```go-html-template
{{ $s := "abc" }}
{{ in $s "b" }} → true
```
@@ -1,25 +1,26 @@
---
title: index
title: collections.Index
linkTitle: index
description: Looks up the index(es) or key(s) of the data structure passed into it.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [index]
returnType: any
signatures:
- collections.Index COLLECTION INDEXES
- collections.Index COLLECTION KEYS
relatedFunctions:
- collections.Dictionary
- collections.EchoParam
- collections.Group
- collections.Index
- collections.IsSet
- collections.Where
signature:
- collections.Index COLLECTION INDEXES
- collections.Index COLLECTION KEYS
- index COLLECTION INDEXES
- index COLLECTION KEYS
aliases: [/functions/index/]
aliases: [/functions/index,/functions/index-function]
---
The `index` functions returns the result of indexing its first argument by the following arguments. Each indexed item must be a map or a slice, e.g.:
@@ -1,19 +1,22 @@
---
title: intersect
title: collections.Intersect
linkTitle: intersect
description: Returns the common elements of two arrays or slices, in the same order as the first array.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
namespace: collections
relatedFuncs:
function:
aliases: [intersect]
returnType: any
signatures: [collections.Intersect SET1 SET2]
relatedFunctions:
- collections.Complement
- collections.Intersect
- collections.SymDiff
- collections.Union
signature:
- collections.Intersect SET1 SET2
- intersect SET1 SET2
aliases: [/functions/intersect]
---
A useful example is to use it as `AND` filters when combined with where:
@@ -27,7 +30,7 @@ A useful example is to use it as `AND` filters when combined with where:
The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters.
See [union](/functions/union) for `OR`.
See [union](/functions/collections/union) for `OR`.
[partials]: /templates/partials/
@@ -1,21 +1,23 @@
---
title: isset
description: Returns true if the key exists within the collection.
title: collections.IsSet
linkTitle: isset
description: Reports whether the key exists within the collection.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [isset]
returnType: bool
signatures: [collections.IsSet COLLECTION KEY]
relatedFunctions:
- collections.Dictionary
- collections.Group
- collections.Index
- collections.IsSet
- collections.Where
signature:
- collections.IsSet COLLECTION KEY
- isset COLLECTION KEY
aliases: [/functions/isset]
---
For example, consider this site configuration:
@@ -1,17 +1,18 @@
---
title: keyVals
title: collections.KeyVals
linkTitle: keyVals
description: Returns a KeyVals struct.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs: []
signature:
- collections.KeyVals KEY VALUES...
- keyVals KEY VALUES...
function:
aliases: [keyVals]
returnType: KeyValues
signatures: [collections.KeyVals KEY VALUES...]
relatedFunctions: []
aliases: [/functions/keyvals]
---
The primary application for this function is the definition of the `namedSlices` parameter in the options map passed to the `.Related` method on the `Page` object.
@@ -1,19 +1,21 @@
---
title: last
title: collections.Last
linkTitle: last
description: Slices an array to the last N elements.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [last]
returnType: any
signatures: [collections.Last INDEX COLLECTION]
relatedFunctions:
- collections.After
- collections.First
- collections.Last
signature:
- collections.Last INDEX COLLECTION
- last INDEX COLLECTION
aliases: [/functions/last]
---
```go-html-template
@@ -1,18 +1,20 @@
---
title: merge
description: "Returns the result of merging two or more maps."
title: collections.Merge
linkTitle: merge
description: Returns the result of merging two or more maps.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [merge]
returnType: any
signatures: [collections.Merge MAP MAP...]
relatedFunctions:
- collections.Append
- collections.Merge
signature:
- collections.Merge MAP MAP...
- merge MAP MAP...
aliases: [/functions/merge]
---
Returns the result of merging two or more maps from left to right. If a key already exists, `merge` updates its value. If a key is absent, `merge` inserts the value under the new key.
@@ -68,5 +70,5 @@ Example 4
```
{{% note %}}
Regardless of depth, merging only applies to maps. For slices, use [append](/functions/append).
Regardless of depth, merging only applies to maps. For slices, use [append](/functions/collections/append).
{{% /note %}}
@@ -0,0 +1,22 @@
---
title: collections.NewScratch
linkTitle: newScratch
description: Creates a new Scratch which can be used to store values in a thread safe way.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: [newScratch]
returnType: Scratch
signatures: [collections.NewScratch ]
relatedFunctions: []
---
```go-html-template
{{ $scratch := newScratch }}
{{ $scratch.Add "b" 2 }}
{{ $scratch.Add "b" 2 }}
{{ $scratch.Get "b" }} → 4
```
@@ -1,20 +1,22 @@
---
title: querify
title: collections.Querify
linkTitle: querify
description: Takes a set or slice of key-value pairs and returns a query string to be appended to URLs.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [querify]
returnType: string
signatures:
- collections.Querify KEY VALUE [KEY VALUE]...
- collections.Querify COLLECTION
relatedFunctions:
- collections.Querify
- urlquery
signature:
- collections.Querify KEY VALUE [KEY VALUE]...
- collections.Querify COLLECTION
- querify KEY VALUE [KEY VALUE]...
- querify COLLECTION
aliases: [/functions/querify]
---
`querify` takes a set or slice of key-value pairs and returns a [query string](https://en.wikipedia.org/wiki/Query_string) that can be appended to a URL.
@@ -2,20 +2,22 @@
title: collections.Reverse
description: Reverses the order of a collection.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: []
returnType: any
signatures: [collections.Reverse COLLECTION]
relatedFunctions:
- collections.Apply
- collections.Delimit
- collections.In
- collections.Reverse
- collections.Seq
- collections.Slice
signature:
- collections.Reverse COLLECTION
aliases: [/functions/collections.reverse]
---
@@ -1,26 +1,27 @@
---
title: seq
title: collections.Seq
linkTitle: seq
description: Returns a slice of integers.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [seq]
returnType: '[]int'
signatures:
- collections.Seq LAST
- collections.Seq FIRST LAST
- collections.Seq FIRST INCREMENT LAST
relatedFunctions:
- collections.Apply
- collections.Delimit
- collections.In
- collections.Reverse
- collections.Seq
- collections.Slice
signature:
- collections.Seq LAST
- collections.Seq FIRST LAST
- collections.Seq FIRST INCREMENT LAST
- seq LAST
- seq FIRST LAST
- seq FIRST INCREMENT LAST
aliases: [/functions/seq]
---
```go-html-template
@@ -1,24 +1,25 @@
---
title: shuffle
title: collections.Shuffle
linkTitle: shuffle
description: Returns a random permutation of a given array or slice.
keywords: [ordering]
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [shuffle]
returnType: any
signatures: [collections.Shuffle COLLECTION]
relatedFunctions:
- collections.Reverse
- collections.Shuffle
- collections.Sort
- collections.Uniq
signature:
- collections.Shuffle COLLECTION
- shuffle COLLECTION
aliases: [/functions/shuffle]
---
```go-html-template
{{ shuffle (seq 1 2 3) }} → [3 1 2]
{{ shuffle (slice "a" "b" "c") }} → [b a c]
@@ -1,13 +1,17 @@
---
title: slice
title: collections.Slice
linkTitle: slice
description: Creates a slice (array) of all passed arguments.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [slice]
returnType: any
signatures: [collections.Slice ITEM...]
relatedFunctions:
- collections.Append
- collections.Apply
- collections.Delimit
@@ -15,19 +19,12 @@ relatedFuncs:
- collections.Reverse
- collections.Seq
- collections.Slice
signature:
- collections.Slice ITEM...
- slice ITEM...
aliases: [/functions/slice]
---
One use case is the concatenation of elements in combination with the [`delimit` function]:
{{< code file="slice.html" >}}
{{ $sliceOfStrings := slice "foo" "bar" "buzz" }}
<!-- returns the slice [ "foo", "bar", "buzz"] -->
{{ delimit ($sliceOfStrings) ", " }}
<!-- returns the string "foo, bar, buzz" -->
{{< /code >}}
[`delimit` function]: /functions/delimit/
```go-html-template
{{ $s := slice "a" "b" "c" }}
{{ $s }} → [a b c]
```
@@ -1,20 +1,22 @@
---
title: sort
title: collections.Sort
linkTitle: sort
description: Sorts slices, maps, and page collections.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [sort]
returnType: any
signatures: ['collections.Sort COLLECTION [KEY] [ORDER]']
relatedFunctions:
- collections.Reverse
- collections.Shuffle
- collections.Sort
- collections.Uniq
signature:
- collections.Sort COLLECTION [KEY] [ORDER]
- sort COLLECTION [KEY] [ORDER]
aliases: [/functions/sort]
---
The `KEY` is optional when sorting slices in ascending order, otherwise it is required. When sorting slices, use the literal `value` in place of the `KEY`. See examples below.
@@ -0,0 +1,28 @@
---
title: collections.SymDiff
linkTitle: symdiff
description: Returns the symmetric difference of two collections.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: [symdiff]
returnType: any
signatures: [COLLECTION | collections.SymDiff COLLECTION]
relatedFunctions:
- collections.Complement
- collections.Intersect
- collections.SymDiff
- collections.Union
aliases: [/functions/symdiff]
---
Example:
```go-html-template
{{ slice 1 2 3 | symdiff (slice 3 4) }} → [1 2 4]
```
Also see https://en.wikipedia.org/wiki/Symmetric_difference
@@ -1,19 +1,22 @@
---
title: union
title: collections.Union
linkTitle: union
description: Given two arrays or slices, returns a new array that contains the elements or objects that belong to either or both arrays/slices.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
namespace: collections
relatedFuncs:
function:
aliases: [union]
returnType: any
signatures: [collections.Union SET1 SET2]
relatedFunctions:
- collections.Complement
- collections.Intersect
- collections.SymDiff
- collections.Union
signature:
- collections.Union SET1 SET2
- union SET1 SET2
aliases: [/functions/union]
---
Given two arrays (or slices) A and B, this function will return a new array that contains the elements or objects that belong to either A or to B or to both. The elements supported are strings, integers, and floats (only float64).
@@ -44,4 +47,4 @@ This is also very useful to use as `OR` filters when combined with where:
The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters.
See [intersect](/functions/intersect) for `AND`.
See [intersect](/functions/collections/intersect) for `AND`.
@@ -1,20 +1,22 @@
---
title: uniq
title: collections.Uniq
linkTitle: uniq
description: Takes in a slice or array and returns a slice with duplicate elements removed.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [uniq]
returnType: any
signatures: [collections.Uniq COLLECTION]
relatedFunctions:
- collections.Reverse
- collections.Shuffle
- collections.Sort
- collections.Uniq
signature:
- collections.Uniq COLLECTION
- uniq COLLECTION
aliases: [/functions/uniq]
---
@@ -1,21 +1,23 @@
---
title: where
title: collections.Where
linkTitle: where
description: Filters an array to only the elements containing a matching value for a given field.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
function:
aliases: [where]
returnType: any
signatures: ['collections.Where COLLECTION KEY [OPERATOR] MATCH']
relatedFunctions:
- collections.Dictionary
- collections.Group
- collections.Index
- collections.IsSet
- collections.Where
signature:
- collections.Where COLLECTION KEY [OPERATOR] MATCH
- where COLLECTION KEY [OPERATOR] MATCH
aliases: [/functions/where]
toc: true
---
@@ -122,7 +124,7 @@ This example matches pages where the "foo" parameter begins with "ab":
{{ end }}
```
{{% readfile file="/functions/common/regular-expressions.md" %}}
{{% readfile file="/functions/_common/regular-expressions.md" %}}
## Use `where` with `first`
@@ -184,5 +186,5 @@ The user can override the default:
mainSections = ["blog", "docs"]
{{< /code-toggle >}}
[intersect]: /functions/intersect/
[intersect]: /functions/collections/intersect
[wherekeyword]: https://www.techonthenet.com/sql/where.php
@@ -1,18 +1,20 @@
---
title: cond
title: compare.Conditional
linkTitle: cond
description: Returns one of two arguments depending on the value of the control argument.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [cond]
returnType: any
signatures: [compare.Conditional CONTROL ARG1 ARG2]
relatedFunctions:
- compare.Conditional
- compare.Default
signature:
- compare.Conditional CONTROL ARG1 ARG2
- cond CONTROL ARG1 ARG2
aliases: [/functions/cond]
---
The CONTROL argument is a boolean value that indicates whether the function should return ARG1 or ARG2. If CONTROL is `true`, the function returns ARG1. Otherwise, the function returns ARG2.
@@ -1,18 +1,20 @@
---
title: default
title: compare.Default
linkTitle: default
description: Allows setting a default value that can be returned if a first value is not set.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [default]
returnType: any
signatures: [compare.Default DEFAULT INPUT]
relatedFunctions:
- compare.Conditional
- compare.Default
signature:
- compare.Default DEFAULT INPUT
- default DEFAULT INPUT
aliases: [/functions/default]
---
`default` checks whether a given value is set and returns a default value if it is not. *Set* in this context means different things depending on the data type:
@@ -1,22 +1,24 @@
---
title: eq
title: compare.Eq
linkTitle: eq
description: Returns the boolean truth of arg1 == arg2 || arg1 == arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [eq]
returnType: bool
signatures: ['compare.Eq ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Eq ARG1 ARG2 [ARG...]
- eq ARG1 ARG2 [ARG...]
aliases: [/functions/eq]
---
```go-html-template
@@ -1,22 +1,24 @@
---
title: ge
title: compare.Ge
linkTitle: ge
description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [ge]
returnType: bool
signatures: ['compare.Ge ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Ge ARG1 ARG2 [ARG...]
- ge ARG1 ARG2 [ARG...]
aliases: [/functions/ge]
---
```go-html-template
@@ -1,22 +1,24 @@
---
title: gt
title: compare.Gt
linkTitle: gt
description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [gt]
returnType: bool
signatures: ['compare.Gt ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Gt ARG1 ARG2 [ARG...]
- gt ARG1 ARG2 [ARG...]
aliases: [/functions/gt]
---
```go-html-template
@@ -1,22 +1,24 @@
---
title: le
title: compare.Le
linkTitle: le
description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [le]
returnType: bool
signatures: ['compare.Le ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Le ARG1 ARG2 [ARG...]
- le ARG1 ARG2 [ARG...]
aliases: [/functions/le]
---
```go-html-template
@@ -1,22 +1,24 @@
---
title: lt
title: compare.Lt
linkTitle: lt
description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: compare
relatedFuncs:
function:
aliases: [lt]
returnType: bool
signatures: ['compare.Lt ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Lt ARG1 ARG2 [ARG...]
- lt ARG1 ARG2 [ARG...]
aliases: [/functions/lt]
---
```go-html-template
@@ -1,21 +1,24 @@
---
title: ne
title: compare.Ne
linkTitle: ne
description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
namespace: compare
relatedFuncs:
function:
aliases: [ne]
returnType: bool
signatures: ['compare.Ne ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq
- compare.Ge
- compare.Gt
- compare.Le
- compare.Lt
- compare.Ne
signature:
- compare.Ne ARG1 ARG2 [ARG...]
- ne ARG1 ARG2 [ARG...]
aliases: [/functions/ne]
---
```go-html-template
-28
View File
@@ -1,28 +0,0 @@
---
title: countrunes
description: Determines the number of runes in a string excluding any whitespace.
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace: strings
relatedFuncs:
- len
- strings.Count
- strings.CountRunes
- strings.CountWords
- strings.RuneCount
signature:
- strings.CountRunes INPUT
- countrunes INPUT
---
In contrast with `countwords` function, which counts every word in a string, the `countrunes` function determines the number of runes in the content and excludes any whitespace. This has specific utility if you are dealing with CJK-like languages.
```go-html-template
{{ "Hello, 世界" | countrunes }}
<!-- outputs a content length of 8 runes. -->
```
[pagevars]: /variables/page/
@@ -2,19 +2,21 @@
title: crypto.FNV32a
description: Returns the FNV (FowlerNollVo) 32 bit hash of a given string.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: crypto
relatedFuncs:
function:
aliases: []
returnType: int
signatures: [crypto.FNV32a STRING]
relatedFunctions:
- crypto.FNV32a
- crypto.HMAC
- crypto.MD5
- crypto.SHA1
- crypto.SHA256
signature:
- crypto.FNV32a STRING
aliases: [/functions/crypto.fnv32a]
---
This function calculates the 32 bit [FNV1a hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash) of a given string according to the [specification](https://datatracker.ietf.org/doc/html/draft-eastlake-fnv-12):
@@ -1,21 +1,23 @@
---
title: hmac
title: crypto.HMAC
linkTitle: hmac
description: Returns a cryptographic hash that uses a key to sign a message.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: crypto
relatedFuncs:
function:
aliases: [hmac]
returnType: string
signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]']
relatedFunctions:
- crypto.FNV32a
- crypto.HMAC
- crypto.MD5
- crypto.SHA1
- crypto.SHA256
signature:
- crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]
- hmac HASH_TYPE KEY MESSAGE [ENCODING]
aliases: [/functions/hmac]
---
Set the `HASH_TYPE` argument to `md5`, `sha1`, `sha256`, or `sha512`.
@@ -1,21 +1,23 @@
---
title: md5
title: crypto.MD5
linkTitle: md5
description: hashes the given input and returns its MD5 checksum.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: crypto
relatedFuncs:
function:
aliases: [md5]
returnType: string
signatures: [crypto.MD5 INPUT]
relatedFunctions:
- crypto.FNV32a
- crypto.HMAC
- crypto.MD5
- crypto.SHA1
- crypto.SHA256
signature:
- crypto.MD5 INPUT
- md5 INPUT
aliases: [/functions/md5]
---
```go-html-template
@@ -1,22 +1,23 @@
---
title: sha1
title: crypto.SHA1
linkTitle: sha1
description: Hashes the given input and returns its SHA1 checksum.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: crypto
relatedFuncs:
function:
aliases: [sha1]
returnType: string
signatures: [crypto.SHA1 INPUT]
relatedFunctions:
- crypto.FNV32a
- crypto.HMAC
- crypto.MD5
- crypto.SHA1
- crypto.SHA256
signature:
- crypto.SHA1 INPUT
- sha1 INPUT
aliases: [sha]
aliases: [/functions/sha,/functions/sha1]
---
```go-html-template
@@ -1,22 +1,23 @@
---
title: sha256
title: crypto.SHA256
linkTitle: sha256
description: Hashes the given input and returns its SHA256 checksum.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: crypto
relatedFuncs:
function:
aliases: [sha256]
returnType: string
signatures: [crypto.SHA256 INPUT]
relatedFunctions:
- crypto.FNV32a
- crypto.HMAC
- crypto.MD5
- crypto.SHA1
- crypto.SHA256
signature:
- crypto.SHA256 INPUT
- sha256 INPUT
aliases: [sha]
aliases: [/functions/sha256]
---
```go-html-template
+117
View File
@@ -0,0 +1,117 @@
---
title: data.GetCSV
linkTitle: getCSV
description: Returns an array of arrays from a local or remote CSV file, or an error if the file does not exist.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: [getCSV]
returnType: '[]string'
signatures: [data.GetCSV SEPARATOR PATHPART...]
relatedFunctions:
- data.GetCSV
- data.GetJSON
toc: true
---
Given the following directory structure:
```text
my-project/
└── other-files/
└── pets.csv
```
Access the data with either of the following:
```go-html-template
{{ $data := getCSV "," "other-files/pets.csv" }}
{{ $data := getCSV "," "other-files/" "pets.csv" }}
```
Access remote data with either of the following:
```go-html-template
{{ $data := getCSV "," "https://example.org/pets.csv" }}
{{ $data := getCSV "," "https://example.org/" "pets.csv" }}
```
The resulting data structure is an array of arrays:
```json
[
["name","type","breed","age"],
["Spot","dog","Collie","3"],
["Felix","cat","Malicious","7"]
]
```
## Global resource alternative
Consider using `resources.Get` with [`transform.Unmarshal`] when accessing a global resource.
```text
my-project/
└── assets/
└── data/
└── pets.csv
```
```go-html-template
{{ $data := "" }}
{{ $p := "data/pets.csv" }}
{{ with resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}
```
## Page resource alternative
Consider using `.Resources.Get` with [`transform.Unmarshal`] when accessing a page resource.
```text
my-project/
└── content/
└── posts/
└── my-pets/
├── index.md
└── pets.csv
```
```go-html-template
{{ $data := "" }}
{{ $p := "pets.csv" }}
{{ with .Resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}
```
## Remote resource alternative
Consider using `resources.GetRemote` with [`transform.Unmarshal`] for improved error handling when accessing a remote resource.
```go-html-template
{{ $data := "" }}
{{ $u := "https://example.org/pets.csv" }}
{{ with resources.GetRemote $u }}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ end }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $u }}
{{ end }}
```
[`transform.Unmarshal`]: /functions/transform/unmarshal
+124
View File
@@ -0,0 +1,124 @@
---
title: data.GetJSON
linkTitle: getJSON
description: Returns a JSON object from a local or remote JSON file, or an error if the file does not exist.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: [getJSON]
returnType: any
signatures: [data.GetJSON PATHPART...]
relatedFunctions:
- data.GetCSV
- data.GetJSON
toc: true
---
Given the following directory structure:
```text
my-project/
└── other-files/
└── books.json
```
Access the data with either of the following:
```go-html-template
{{ $data := getCSV "," "other-files/books.json" }}
{{ $data := getCSV "," "other-files/" "books.json" }}
```
Access remote data with either of the following:
```go-html-template
{{ $data := getCSV "," "https://example.org/books.json" }}
{{ $data := getCSV "," "https://example.org/" "books.json" }}
```
The resulting data structure is a JSON object:
```json
[
{
"author": "Victor Hugo",
"rating": 5,
"title": "Les Misérables"
},
{
"author": "Victor Hugo",
"rating": 4,
"title": "The Hunchback of Notre Dame"
}
]
```
## Global resource alternative
Consider using `resources.Get` with [`transform.Unmarshal`] when accessing a global resource.
```text
my-project/
└── assets/
└── data/
└── books.json
```
```go-html-template
{{ $data := "" }}
{{ $p := "data/books.json" }}
{{ with resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}
```
## Page resource alternative
Consider using `.Resources.Get` with [`transform.Unmarshal`] when accessing a page resource.
```text
my-project/
└── content/
└── posts/
└── reading-list/
├── books.json
└── index.md
```
```go-html-template
{{ $data := "" }}
{{ $p := "books.json" }}
{{ with .Resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}
```
## Remote resource alternative
Consider using `resources.GetRemote` with [`transform.Unmarshal`] for improved error handling when accessing a remote resource.
```go-html-template
{{ $data := "" }}
{{ $u := "https://example.org/books.json" }}
{{ with resources.GetRemote $u }}
{{ with .Err }}
{{ errorf "%s" . }}
{{ else }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ end }}
{{ else }}
{{ errorf "Unable to get remote resource %q" $u }}
{{ end }}
```
[`transform.Unmarshal`]: /functions/transform/unmarshal
-55
View File
@@ -1,55 +0,0 @@
---
title: time.Format
description: Converts a date/time to a localized string.
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace: time
relatedFuncs:
- time.AsTime
- time.Duration
- time.Format
- time.Now
- time.ParseDuration
signature:
- time.Format LAYOUT INPUT
- dateFormat LAYOUT INPUT
---
`time.Format` (alias `dateFormat`) converts either a `time.Time` object (e.g. `.Date`) or a timestamp string `INPUT` into the format specified by the `LAYOUT` string.
```go-html-template
{{ time.Format "Monday, Jan 2, 2006" "2015-01-21" }} → "Wednesday, Jan 21, 2015"
```
`time.Format` returns a localized string for the current language.
The `LAYOUT` string can be either:
* [Gos Layout String](/functions/format/#gos-layout-string) to learn about how the `LAYOUT` string has to be formatted. There are also some useful examples.
* A custom Hugo layout identifier (see full list below)
See the [`time` function](/functions/time/) to convert a timestamp string to a Go `time.Time` type value.
## Date/time formatting layouts
Go's date layout strings can be hard to reason about, especially with multiple languages. You can alternatively use some predefined layout identifiers that will output localized dates or times:
```go-html-template
{{ .Date | time.Format ":date_long" }}
```
The full list of custom layouts with examples for English:
* `:date_full` => `Wednesday, June 6, 2018`
* `:date_long` => `June 6, 2018`
* `:date_medium` => `Jun 6, 2018`
* `:date_short` => `6/6/18`
* `:time_full` => `2:09:37 am UTC`
* `:time_long` => `2:09:37 am UTC`
* `:time_medium` => `2:09:37 am`
* `:time_short` => `2:09 am`
+50
View File
@@ -0,0 +1,50 @@
---
title: debug.Dump
description: Returns an object dump as a string.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType: string
signatures: [debug.Dump VALUE]
relatedFunctions: []
---
```go-html-template
{{ $data := "" }}
{{ $p := "data/books.json" }}
{{ with resources.Get $p }}
{{ $opts := dict "delimiter" "," }}
{{ $data = . | transform.Unmarshal $opts }}
{{ else }}
{{ errorf "Unable to get resource %q" $p }}
{{ end }}
```
```go-html-template
<pre>{{ debug.Dump $data }}</pre>
```
```text
[]interface {}{
map[string]interface {}{
"author": "Victor Hugo",
"rating": 5.0,
"title": "Les Misérables",
},
map[string]interface {}{
"author": "Victor Hugo",
"rating": 4.0,
"title": "The Hunchback of Notre Dame",
},
}
```
{{% note %}}
Output from this function may change from one release to the next. Use for debugging only.
{{% /note %}}
@@ -1,18 +1,20 @@
---
title: base64Decode
title: encoding.Base64Decode
linkTitle: base64Decode
description: Returns the base64 decoding of the given content.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: encoding
relatedFuncs:
- encoding.Base64Decode
- encoding.Base64Encode
signature:
- encoding.Base64Decode INPUT
function:
aliases: [base64Decode]
returnType: string
signatures: [encoding.Base64Decode INPUT]
signatures:
-
- base64Decode INPUT
aliases: [/functions/base64Decode]
---
```go-html-template
@@ -1,19 +1,20 @@
---
title: base64Encode
title: encoding.Base64Encode
linkTitle: base64Encode
description: Returns the base64 decoding of the given content.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: encoding
relatedFuncs:
function:
aliases: [base64Encode]
returnType: string
signatures: [encoding.Base64Encode INPUT]
relatedFunctions:
- encoding.Base64Decode
- encoding.Base64Encode
signature:
- encoding.Base64Encode INPUT
- base64Encode INPUT
aliases: ['/functions/base64']
aliases: [/functions/base64, /functions/base64Encode]
---
```go-html-template
@@ -1,21 +1,23 @@
---
title: jsonify
title: encoding.Jsonify
linkTitle: jsonify
description: Encodes a given object to JSON.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: encoding
relatedFuncs:
function:
aliases: [jsonify]
returnType: template.HTML
signatures:
- encoding.Jsonify INPUT
- encoding.Jsonify OPTIONS INPUT
relatedFunctions:
- encoding.Jsonify
- transform.Remarshal
- transform.Unmarshal
signature:
- encoding.Jsonify INPUT
- encoding.Jsonify OPTIONS INPUT
- jsonify INPUT
- jsonify OPTIONS INPUT
aliases: [/functions/jsonify]
---
To customize the printing of the JSON, pass a map of options as the first
@@ -30,7 +32,7 @@ more copies of *indent* according to the indentation nesting.
{{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }}
```
## Jsonify options
## Options
indent ("")
: Indentation to use.
@@ -1,19 +1,21 @@
---
title: errorf
title: fmt.Errorf
linkTitle: errorf
description: Log an ERROR from a template.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [errorf]
returnType: string
signatures: ['fmt.Errorf FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf
- fmt.Erroridf
- fmt.Warnf
signature:
- fmt.Errorf FORMAT [INPUT]
- errorf FORMAT [INPUT]
aliases: [/functions/errorf]
---
The documentation for [Go's fmt package] describes the structure and content of the format string.
@@ -26,6 +28,6 @@ Like the [`printf`] function, the `errorf` function evaluates the format string
Use the [`erroridf`] function to allow optional supression of specific errors.
[`erroridf`]: /functions/erroridf/
[`printf`]: /functions/printf/
[`erroridf`]: /functions/fmt/erroridf
[`printf`]: /functions/fmt/printf
[Go's fmt package]: https://pkg.go.dev/fmt
@@ -1,19 +1,21 @@
---
title: erroridf
title: fmt.Erroridf
linkTitle: erroridf
description: Log a suppressable ERROR from a template.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [erroridf]
returnType: string
signatures: ['fmt.Erroridf ID FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf
- fmt.Erroridf
- fmt.Warnf
signature:
- fmt.Erroridf ID FORMAT [INPUT]
- erroridf ID FORMAT [INPUT]
aliases: [/functions/erroridf]
---
The documentation for [Go's fmt package] describes the structure and content of the format string.
@@ -42,5 +44,5 @@ To suppress this message:
ignoreErrors = ["error-42"]
{{< /code-toggle >}}
[`errorf`]: /functions/errorf/
[`errorf`]: /functions/fmt/errorf
[Go's fmt package]: https://pkg.go.dev/fmt
@@ -1,19 +1,21 @@
---
title: print
title: fmt.Print
linkTitle: print
description: Prints the default representation of the given arguments using the standard `fmt.Print` function.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [print]
returnType: string
signatures: [fmt.Print INPUT]
relatedFunctions:
- fmt.Print
- fmt.Printf
- fmt.Println
signature:
- fmt.Print INPUT
- print INPUT
aliases: [/functions/print]
---
```go-html-template
@@ -1,19 +1,21 @@
---
title: printf
title: fmt.Printf
linkTitle: printf
description: Formats a string using the standard `fmt.Sprintf` function.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [printf]
returnType: string
signatures: ['fmt.Printf FORMAT [INPUT]']
relatedFunctions:
- fmt.Print
- fmt.Printf
- fmt.Println
signature:
- fmt.Printf FORMAT [INPUT]
- printf FORMAT [INPUT]
aliases: [/functions/printf]
---
The documentation for [Go's fmt package] describes the structure and content of the format string.
@@ -1,19 +1,21 @@
---
title: println
title: fmt.Println
linkTitle: println
description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a linebreak.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [println]
returnType: string
signatures: [fmt.Println INPUT]
relatedFunctions:
- fmt.Print
- fmt.Printf
- fmt.Println
signature:
- fmt.Println INPUT
- println INPUT
aliases: [/functions/println]
---
```go-html-template
@@ -1,19 +1,21 @@
---
title: warnf
title: fmt.Warnf
linkTitle: warnf
description: Log a WARNING from a template.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: fmt
relatedFuncs:
function:
aliases: [warnf]
returnType: string
signatures: ['fmt.Warnf FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf
- fmt.Erroridf
- fmt.Warnf
signature:
- fmt.Warnf FORMAT [INPUT]
- warnf FORMAT [INPUT]
aliases: [/functions/warnf]
---
The documentation for [Go's fmt package] describes the structure and content of the format string.
@@ -24,5 +26,5 @@ Like the [`printf`] function, the `warnf` function evaluates the format string.
{{ warnf "Copyright notice missing from site configuration" }}
```
[`printf`]: /functions/printf/
[`printf`]: /functions/fmt/printf
[Go's fmt package]: https://pkg.go.dev/fmt
-121
View File
@@ -1,121 +0,0 @@
---
title: .Format
description: Formats built-in Hugo dates---`.Date`, `.PublishDate`, and `.Lastmod`---according to Go's layout string.
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs: []
signature:
- .Format FORMAT
toc: true
---
`.Format` will format date values defined in your front matter and can be used as a property on the following [page variables][pagevars]:
* `.PublishDate`
* `.Date`
* `.Lastmod`
Assuming a key-value of `date: 2017-03-03` in a content file's front matter, your can run the date through `.Format` followed by a layout string for your desired output at build time:
```go-html-template
{{ .PublishDate.Format "January 2, 2006" }} => March 3, 2017
```
For formatting *any* string representations of dates defined in your front matter, see the [`dateFormat` function][dateFormat], which will still leverage the Go layout string explained below but uses a slightly different syntax.
## Go's layout string
Hugo templates [format your dates][time] via layout strings that point to a specific reference time:
```
Mon Jan 2 15:04:05 MST 2006
```
While this may seem arbitrary, the numerical value of `MST` is `07`, thus making the layout string a sequence of numbers.
Here is a visual explanation [taken directly from the Go docs][gdex]:
```
Jan 2 15:04:05 2006 MST
=> 1 2 3 4 5 6 -7
```
### Hugo date and time templating reference
The following examples show the layout string followed by the rendered output.
The examples were rendered and tested in [CST] and all point to the same field in a content file's front matter:
```
date: 2017-03-03T14:15:59-06:00
```
`.Date` (i.e. called via [page variable][pagevars])
: **Returns**: `2017-03-03 14:15:59 -0600 CST`
`"Monday, January 2, 2006"`
: **Returns**: `Friday, March 3, 2017`
`"Mon Jan 2 2006"`
: **Returns**: `Fri Mar 3 2017`
`"January 2006"`
: **Returns**: `March 2017`
`"2006-01-02"`
: **Returns**: `2017-03-03`
`"Monday"`
: **Returns**: `Friday`
`"02 Jan 06 15:04 MST"` (RFC822)
: **Returns**: `03 Mar 17 14:15 CST`
`"02 Jan 06 15:04 -0700"` (RFC822Z)
: **Returns**: `03 Mar 17 14:15 -0600`
`"Mon, 02 Jan 2006 15:04:05 MST"` (RFC1123)
: **Returns**: `Fri, 03 Mar 2017 14:15:59 CST`
`"Mon, 02 Jan 2006 15:04:05 -0700"` (RFC1123Z)
: **Returns**: `Fri, 03 Mar 2017 14:15:59 -0600`
More examples can be found in Go's [documentation for the time package][timeconst].
### Cardinal s
Spelled-out cardinal numbers (e.g. "one", "two", and "three") are not currently supported.
Use the [`humanize`](/functions/humanize) function to render the day of the month as an ordinal number:
```go-html-template
{{ humanize .Date.Day }} of {{ .Date.Format "January 2006" }}
```
This will output:
```
5th of March 2017
```
### Use `.Local` and `.UTC`
In conjunction with the [`dateFormat` function][dateFormat], you can also convert your dates to `UTC` or to local timezones:
`{{ dateFormat "02 Jan 06 15:04 MST" .Date.UTC }}`
: **Returns**: `03 Mar 17 20:15 UTC`
`{{ dateFormat "02 Jan 06 15:04 MST" .Date.Local }}`
: **Returns**: `03 Mar 17 14:15 CST`
[CST]: https://en.wikipedia.org/wiki/Central_Time_Zone
[dateFormat]: /functions/dateformat/
[gdex]: https://golang.org/pkg/time/#example_Time_Format
[pagevars]: /variables/page/
[time]: https://golang.org/pkg/time/
[timeconst]: https://golang.org/pkg/time/#ANSIC
@@ -2,20 +2,25 @@
title: len
description: Returns the length of a string, slice, map, or collection.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: text/template
relatedFuncs:
function:
aliases: []
returnType: int
signatures: [len INPUT]
relatedFunctions:
- len
- strings.Count
- strings.CountRunes
- strings.CountWords
- strings.RuneCount
signature: ["len INPUT"]
aliases: [/functions/len]
---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
With a string:
```go-html-template
+159
View File
@@ -0,0 +1,159 @@
---
title: range
description: Iterates over slices, maps, and page collections.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType:
signatures: [range COLLECTION]
relatedFunctions:
- with
- range
aliases: [/functions/range]
toc: true
---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
## Slices
Template:
```go-html-template
{{ $s := slice "foo" "bar" "baz" }}
{{ range $s }}
<p>{{ . }}</p>
{{ end }}
```
Result:
```html
<p>foo</p>
<p>bar</p>
<p>baz</p>
```
Template:
```go-html-template
{{ $s := slice "foo" "bar" "baz" }}
{{ range $v := $s }}
<p>{{ $v }}</p>
{{ end }}
```
Result:
```html
<p>foo</p>
<p>bar</p>
<p>baz</p>
```
Template:
```go-html-template
{{ $s := slice "foo" "bar" "baz" }}
{{ range $k, $v := $s }}
<p>{{ $k }}: {{ $v }}</p>
{{ end }}
```
Result:
```html
<p>0: foo</p>
<p>1: bar</p>
<p>2: baz</p>
```
## Maps
Template:
```go-html-template
{{ $m := slice
(dict "name" "John" "age" 30)
(dict "name" "Will" "age" 28)
(dict "name" "Joey" "age" 24)
}}
{{ range $m }}
<p>{{ .name }} is {{ .age }}</p>
{{ end }}
```
Result:
```html
<p>John is 30</p>
<p>Will is 28</p>
<p>Joey is 24</p>
```
## Page collections
Template:
```go-html-template
{{ range where site.RegularPages "Type" "articles" }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
```
Result:
```html
<h2><a href="/articles/article-3/">Article 3</a></h2>
<h2><a href="/articles/article-2/">Article 2</a></h2>
<h2><a href="/articles/article-1/">Article 1</a></h2>
```
## Break
Use the `break` statement to stop the innermost iteration and bypass all remaining iterations.
Template:
```go-html-template
{{ $s := slice "foo" "bar" "baz" }}
{{ range $s }}
{{ if eq . "bar" }}
{{ break }}
{{ end }}
<p>{{ . }}</p>
{{ end }}
```
Result:
```html
<p>foo</p>
```
## Continue
Use the `continue` statement to stop the innermost iteration and continue to the next iteration.
Template:
```go-html-template
{{ $s := slice "foo" "bar" "baz" }}
{{ range $s }}
{{ if eq . "bar" }}
{{ continue }}
{{ end }}
<p>{{ . }}</p>
{{ end }}
```
Result:
```html
<p>foo</p>
<p>baz</p>
```
@@ -2,18 +2,22 @@
title: urlquery
description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: text/template
relatedFuncs:
function:
aliases: []
returnType: string
signatures: ['urlquery INPUT [INPUT]...']
relatedFunctions:
- collections.Querify
- urlquery
signature:
- urlquery INPUT [INPUT]...
aliases: [/functions/urlquery]
---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
This template code:
```go-html-template
@@ -2,23 +2,27 @@
title: with
description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent or empty.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: text/template
relatedFuncs:
function:
aliases: []
returnType: any
signatures: [with PIPELINE]
relatedFunctions:
- with
- range
signature:
- with INPUT
aliases: [/functions/with]
---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
An alternative way of writing an `if` statement and then referencing the same value is to use `with` instead. `with` rebinds the context (`.`) within its scope and skips the block if the variable is absent, unset or empty.
The set of *empty* values is defined by [the Go templates package](https://golang.org/pkg/text/template/). Empty values include `false`, the number zero, and the empty string.
If you want to render a block if an index or key is present in a slice, array, channel or map, regardless of whether the value is empty, you should use [`isset`](/functions/isset) instead.
If you want to render a block if an index or key is present in a slice, array, channel or map, regardless of whether the value is empty, you should use [`isset`](/functions/collections/isset) instead.
The following example checks for a [user-defined site variable](/variables/site/) called `twitteruser`. If the key-value is not set, the following will render nothing:
-23
View File
@@ -1,23 +0,0 @@
---
title: .HasMenuCurrent
description:
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs:
- .HasMenuCurrent
- .IsMenuCurrent
signature:
- PAGE.HasMenuCurrent MENU MENUENTRY
---
`.HasMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
returns `true` if the PAGE is the same object as the `.Page` in one of the
**children menu entries** under MENUENTRY in a given MENU.
If MENUENTRY's `.Page` is a [section](/content-management/sections/) then, from Hugo `0.86.0`, this method also returns true for any descendant of that section..
You can find its example use in [menu templates](/templates/menu-templates/).
@@ -1,15 +1,20 @@
---
title: hugo
description: The `hugo` function provides easy access to Hugo-related data.
keywords: []
description: Provides global access to Hugo-related data.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: global
relatedFuncs: []
signature: [hugo]
function:
aliases: []
returnType:
signatures: [hugo]
relatedFunctions:
- hugo
- page
- site
aliases: [/functions/hugo]
---
`hugo` returns an instance that contains the following functions:
+2 -1
View File
@@ -2,6 +2,7 @@
title: Image filters
description: The images namespace provides a list of filters and other image related functions.
categories: [functions]
keywords: []
aliases: [/functions/imageconfig/]
menu:
docs:
@@ -270,4 +271,4 @@ favicon.ico: {{ .Width }} x {{ .Height }}
{{ end }}
```
[`Process`]: #process
[`Process`]: #process
-32
View File
@@ -1,32 +0,0 @@
---
title: in
description: Checks if an element is in an array or slice---or a substring in a string---and returns a boolean.
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace: collections
relatedFuncs:
- strings.Contains
- strings.ContainsAny
- strings.ContainsNonSpace
- strings.HasPrefix
- strings.HasSuffix
signature:
- collections.In SET ITEM
- in SET ITEM
---
The elements supported are strings, integers and floats, although only float64 will match as expected.
In addition, `in` can also check if a substring exists in a string.
```go-html-template
{{ if in .Params.tags "Git" }}Follow me on GitHub!{{ end }}
```
```go-html-template
{{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
```
@@ -1,19 +1,21 @@
---
title: humanize
title: inflect.Humanize
linkTitle: humanize
description: Returns the humanized version of an argument with the first letter capitalized.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: inflect
relatedFuncs:
function:
aliases: [humanize]
returnType: string
signatures: [inflect.Humanize INPUT]
relatedFunctions:
- inflect.Humanize
- inflect.Pluralize
- inflect.Singularize
signature:
- inflect.Humanize INPUT
- humanize INPUT
aliases: [/functions/humanize]
---
If the input is either an int64 value or the string representation of an integer, humanize returns the number with the proper ordinal appended.
@@ -1,19 +1,21 @@
---
title: pluralize
title: inflect.Pluralize
linkTitle: pluralize
description: Pluralizes the given word according to a set of common English pluralization rules
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: inflect
relatedFuncs:
function:
aliases: [pluralize]
returnType: string
signatures: [inflect.Pluralize INPUT]
relatedFunctions:
- inflect.Humanize
- inflect.Pluralize
- inflect.Singularize
signature:
- inflect.Pluralize INPUT
- pluralize INPUT
aliases: [/functions/pluralize]
---
```go-html-template
@@ -1,21 +1,25 @@
---
title: singularize
title: inflect.Singularize
linkTitle: singularize
description: Converts a word according to a set of common English singularization rules.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
keywords: []
namespace: inflect
relatedFuncs:
function:
aliases: [singularize]
returnType: string
signatures: [inflect.Singularize INPUT]
relatedFunctions:
- inflect.Humanize
- inflect.Pluralize
- inflect.Singularize
signature:
- inflect.Singularize INPUT
- singularize INPUT
aliases: [/functions/singularize]
---
`{{ "cats" | singularize }}` → "cat"
```go-html-template
{{ "cats" | singularize }} → "cat"
```
See also the `.Data.Singular` [taxonomy variable](/variables/taxonomy/) for singularizing taxonomy names.
-21
View File
@@ -1,21 +0,0 @@
---
title: .IsMenuCurrent
description:
categories: [functions]
menu:
docs:
parent: functions
keywords: []
namespace:
relatedFuncs:
- .HasMenuCurrent
- .IsMenuCurrent
signature:
- PAGE.IsMenuCurrent MENU MENUENTRY
---
`.IsMenuCurrent` is a method in `Page` object returning a _boolean_ value. It
returns `true` if the PAGE is the same object as the `.Page` in MENUENTRY in a
given MENU.
You can find its example use in [menu templates](/templates/menu-templates/).
-14
View File
@@ -1,14 +0,0 @@
---
title: lang
package: lang
description: "Functions in the language namespace."
categories: [functions]
menu:
docs:
parent: functions
keywords: []
relatedFuncs: []
signature: []
aliases: ['/functions/numfmt/']
type: 'template-func'
---
@@ -0,0 +1,27 @@
---
title: lang.FormatAccounting
description: Returns a currency representation of a number for the given currency and precision for the current language in accounting notation.
categories: [functions]
keywords: []
menu:
docs:
parent: functions
function:
aliases: []
returnType: string
signatures: [lang.FormatAccounting PRECISION CURRENCY NUMBER]
relatedFunctions:
- lang.FormatAccounting
- lang.FormatCurrency
- lang.FormatNumber
- lang.FormatNumberCustom
- lang.FormatPercent
---
```go-html-template
{{ 512.5032 | lang.FormatAccounting 2 "NOK" }} → NOK512.50
```
{{% note %}}
{{% readfile file="/functions/_common/locales.md" %}}
{{% /note %}}

Some files were not shown because too many files have changed in this diff Show More