Add return type to functions

This commit is contained in:
Joe Mooring authored and GitHub committed 2023-09-30 21:03:52 -07:00
1 parent 85ac3e7791
commit a3a40ff999
252 files changed
+2691 -1762

No files matched your search

+7 -4
View File
@@ -1,11 +1,14 @@
--- ---
title: {{ replace .Name "-" " " | title }} title: {{ replace .File.ContentBaseName "-" " " | title }}
description: "" description:
signature: []
categories: [functions] categories: [functions]
keywords: [] keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
relatedfuncs: [] function:
aliases: []
returnType:
signatures: []
relatedFunctions: []
--- ---
+2 -3
View File
@@ -1,6 +1,5 @@
--- ---
title: "{{ replace .Name "-" " " | title }}" title: {{ replace .File.ContentBaseName "-" " " | title }}
description: "" description:
date: {{ .Date }} 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" }} 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. # The URL to the site on the internet.
siteURL: https://gohugo.io/ siteURL: https://gohugo.io/
@@ -34,4 +34,3 @@ bio.md
featured.png 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). : 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 [@spf13]: https://twitter.com/spf13
[Amazon S3]: https://aws.amazon.com/s3/ [Amazon S3]: https://aws.amazon.com/s3/
[Azure]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website [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/ [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/ [GitHub Pages]: https://pages.github.com/
[GitLab Pages]: https://about.gitlab.com/features/pages/ [GitLab Pages]: https://about.gitlab.com/features/pages/
[Go language]: https://go.dev/ [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/ [Google Cloud Storage]: https://cloud.google.com/storage/
[Heroku]: https://www.heroku.com/ [Heroku]: https://www.heroku.com/
[Jekyll]: https://jekyllrb.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 ## 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]: 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] * [Markdown Tutorial (Interactive), Garen Torikian][mdtutorial]
* [The Markdown Guide, Matt Cone][mdguide] * [The Markdown Guide, Matt Cone][mdguide]
[`emojify` function]: /functions/emojify/
[ascii]: https://asciidoctor.org/ [ascii]: https://asciidoctor.org/
[config]: /getting-started/configuration/ [config]: /getting-started/configuration/
[developer tools]: /tools/ [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). 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 %}} {{% /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. 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 hugo --gc
``` ```
[time.Format]: /functions/dateformat [time.Format]: /functions/time/format
[`anchor`]: /content-management/image-processing#anchor [`anchor`]: /content-management/image-processing#anchor
[mounted]: /hugo-modules/configuration#module-configuration-mounts [mounted]: /hugo-modules/configuration#module-configuration-mounts
[page bundle]: /content-management/page-bundles [page bundle]: /content-management/page-bundles
[`lang.FormatNumber`]: /functions/lang [`lang.FormatNumber`]: /functions/lang/formatnumber
[filters]: /functions/images [filters]: /functions/images
[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing> [github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop> [Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
@@ -519,4 +519,4 @@ hugo --gc
[`Fit`]: #fit [`Fit`]: #fit
[`Resize`]: #resize [`Resize`]: #resize
[site configuration]: #processing-options [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 Français|mercredi 3 novembre 2021
Deutsch|Mittwoch, 3. November 2021 Deutsch|Mittwoch, 3. November 2021
See [time.Format] for details. See [`time.Format`] for details.
### Currency ### 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: 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` * 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). 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 hugo new content content/de/post/test.md
``` ```
[abslangurl]: /functions/abslangurl [`abslangurl`]: /functions/urls/abslangurl
[config]: /getting-started/configuration/ [config]: /getting-started/configuration/
[contenttemplate]: /templates/single-page-templates/ [contenttemplate]: /templates/single-page-templates/
[go-i18n-source]: https://github.com/nicksnyder/go-i18n [go-i18n-source]: https://github.com/nicksnyder/go-i18n
[go-i18n]: https://github.com/nicksnyder/go-i18n [go-i18n]: https://github.com/nicksnyder/go-i18n
[homepage]: /templates/homepage/ [homepage]: /templates/homepage/
[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/ [Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
[i18func]: /functions/i18n/ [i18func]: /functions/lang/translate
[lang.FormatAccounting]: /functions/lang [lang.FormatAccounting]: /functions/lang/formataccounting
[lang.FormatCurrency]: /functions/lang [lang.FormatCurrency]: /functions/lang/formatcurrency
[lang.FormatNumber]: /functions/lang [lang.FormatNumber]: /functions/lang/formatnumber
[lang.FormatNumberCustom]: /functions/lang [lang.FormatNumberCustom]: /functions/lang/formatnumbercustom
[lang.FormatPercent]: /functions/lang [lang.FormatPercent]: /functions/lang/formatpercent
[lang.Merge]: /functions/lang.merge/ [lang.Merge]: /functions/lang/merge/
[menus]: /content-management/menus/ [menus]: /content-management/menus/
[OS environment]: /getting-started/configuration/#configure-with-environment-variables [OS environment]: /getting-started/configuration/#configure-with-environment-variables
[rellangurl]: /functions/rellangurl [`rellangurl`]: /functions/urls/rellangurl
[RFC 5646]: https://tools.ietf.org/html/rfc5646 [RFC 5646]: https://tools.ietf.org/html/rfc5646
[single page templates]: /templates/single-page-templates/ [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: To specify one or more [highlighting options], include a quotation-encapsulated, comma-separated list:
[highlighting options]: /functions/highlight/ [highlighting options]: /functions/transform/highlight/
```text ```text
{{</* highlight go-html-template "lineNos=inline, lineNoStart=42" */>}} {{</* 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 [`figure` shortcode]: #figure
[contentmanagementsection]: /content-management/formats/ [contentmanagementsection]: /content-management/formats/
[examplegist]: https://gist.github.com/spf13/7896402 [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/ [Hugo and the GDPR]: /about/hugo-and-gdpr/
[Instagram]: https://www.instagram.com/ [Instagram]: https://www.instagram.com/
[pagevariables]: /variables/page/ [pagevariables]: /variables/page/
@@ -92,7 +92,7 @@ Gives this:
## Highlight template function ## Highlight template function
See [Highlight](/functions/highlight/). See [Highlight](/functions/transform/highlight/).
## Highlighting in code fences ## Highlighting in code fences
+1 -2
View File
@@ -191,12 +191,11 @@ title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis" wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
{{< /code-toggle >}} {{< /code-toggle >}}
[`urlize` template function]: /functions/urlize/
[content section]: /content-management/sections/ [content section]: /content-management/sections/
[content type]: /content-management/types/ [content type]: /content-management/types/
[documentation on archetypes]: /content-management/archetypes/ [documentation on archetypes]: /content-management/archetypes/
[front matter]: /content-management/front-matter/ [front matter]: /content-management/front-matter/
[taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-list-templates [taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-list-templates
[taxonomy templates]: /templates/taxonomy-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/ [configuration]: /getting-started/configuration/
@@ -2,13 +2,15 @@
title: .AddDate title: .AddDate
description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value. description: Returns the time corresponding to adding the given number of years, months, and days to the given time.Time value.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType: time.Time
signature: [.AddDate YEARS MONTHS DAYS] signatures: [.AddDate YEARS MONTHS DAYS]
relatedFunctions: []
--- ---
```go-html-template ```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 title: .Get
description: Accesses positional and ordered parameters in shortcode declaration. description: Accesses positional and ordered parameters in shortcode declaration.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType: any
signature: signatures:
- .Get INDEX - .Get INDEX
- .Get KEY - .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. `.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 title: .GetPage
description: Gets a `Page` of a given `path`. description: Gets a `Page` of a given `path`.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType:
signature: signatures: [.GetPage PATH]
- .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. `.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 title: .Param
description: Returns a page parameter, falling back to a site parameter if present. description: Returns a page parameter, falling back to a site parameter if present.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType: any
signature: signatures: [.Param KEY]
- .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`. 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 title: .Render
description: Takes a view to apply when rendering content. description: Takes a view to apply when rendering content.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType: template.HTML
signature: signatures: [.Render LAYOUT]
- .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). 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 title: .RenderString
description: sRenders markup to HTML. description: Renders markup to HTML.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: [] returnType: template.HTML
signature: signatures: ['.RenderString MARKUP [OPTIONS]']
- .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). `.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 }} {{ "/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 title: .Scratch
description: Acts as a "scratchpad" to store and manipulate data. description: Acts as a "scratchpad" to store and manipulate data.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: returnType:
signatures: []
relatedFunctions:
- .Store - .Store
- .Scratch - .Scratch
signature:
aliases: [/extras/scratch/,/doc/scratch/] 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. 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 ```go-html-template
{{ $scratch.Add "greetings" "Hello" }} {{ $scratch.Add "greetings" "Hello" }}
@@ -2,15 +2,17 @@
title: .Store title: .Store
description: Returns a Scratch that is not reset on server rebuilds. description: Returns a Scratch that is not reset on server rebuilds.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: aliases: []
relatedFuncs: returnType:
signatures: []
relatedFunctions:
- .Store - .Store
- .Scratch - .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. 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
File renamed without changes.
+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. description: Casts a value to a decimal (base 10) floating point value.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: cast aliases: [float]
relatedFuncs: returnType: float64
signatures: [cast.ToFloat INPUT]
relatedFunctions:
- cast.ToFloat - cast.ToFloat
- cast.ToInt - cast.ToInt
- cast.ToString - cast.ToString
signature: aliases: [/functions/float]
- cast.ToFloat INPUT
- float INPUT
--- ---
With a decimal (base 10) input: 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. description: Casts a value to a decimal (base 10) integer.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: cast aliases: [int]
relatedFuncs: returnType: int
signatures: [cast.ToInt INPUT]
relatedFunctions:
- cast.ToFloat - cast.ToFloat
- cast.ToInt - cast.ToInt
- cast.ToString - cast.ToString
signature: aliases: [/functions/int]
- cast.ToInt INPUT
- int INPUT
--- ---
With a decimal (base 10) input: With a decimal (base 10) input:
@@ -1,19 +1,21 @@
--- ---
title: string title: cast.ToString
linkTitle: string
description: Cast a value to a string. description: Cast a value to a string.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: cast aliases: [string]
relatedFuncs: returnType: string
signatures: [cast.ToString INPUT]
relatedFunctions:
- cast.ToFloat - cast.ToFloat
- cast.ToInt - cast.ToInt
- cast.ToString - cast.ToString
signature: aliases: [/functions/string]
- cast.ToString INPUT
- string INPUT
--- ---
With a decimal (base 10) input: 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. description: Slices an array to the items after the Nth item.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [after]
relatedFuncs: returnType: any
signatures: [collections.After INDEX COLLECTION]
relatedFunctions:
- collections.After - collections.After
- collections.First - collections.First
- collections.Last - collections.Last
signature: aliases: [/functions/after]
- collections.After INDEX COLLECTION
- after INDEX COLLECTION
--- ---
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 ```go-html-template
{{ $data := slice "one" "two" "three" "four" }} {{ $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 ## 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). 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. 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 }} {{ end }}
{{< /code >}} {{< /code >}}
[`first` function]: /functions/first/ [`first`]: /functions/collections/first
[list/section page]: /templates/section-templates/ [list/section page]: /templates/section-templates
[lists]: /templates/lists/#order-content [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. description: Appends one or more elements to a slice and returns the resulting slice.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [append]
relatedFuncs: returnType: any
signatures:
- COLLECTION | collections.Append ELEMENT [ELEMENT]...
- COLLECTION | collections.Append COLLECTION
relatedFunctions:
- collections.Append - collections.Append
- collections.Merge - collections.Merge
- collections.Slice - collections.Slice
signature: aliases: [/functions/append]
- COLLECTION | collections.Append ELEMENT [ELEMENT]...
- COLLECTION | collections.Append COLLECTION
- COLLECTION | append ELEMENT [ELEMENT]...
- COLLECTION | append COLLECTION
--- ---
This function appends all elements, excluding the last, to the last element. This allows [pipe](/getting-started/glossary/#pipeline) constructs as shown below. 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. description: Given an array or slice, `apply` returns a new slice with a function applied over it.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [apply]
relatedFuncs: returnType: any
signatures: ['collections.Apply COLLECTION FUNCTION [PARAM...]']
relatedFunctions:
- collections.Apply - collections.Apply
- collections.Delimit - collections.Delimit
- collections.In - collections.In
- collections.Reverse - collections.Reverse
- collections.Seq - collections.Seq
- collections.Slice - collections.Slice
signature: aliases: [/functions/apply]
- collections.Apply COLLECTION FUNCTION [PARAM...]
- apply COLLECTION FUNCTION [PARAM...]
--- ---
`apply` expects at least three arguments, depending on the function being applied. `apply` expects at least three arguments, depending on the function being applied.
1. The first argument is the sequence to operate on. 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. 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: 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" "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 ```go-html-template
{{ range .Params.names }}{{ . | urlize }}{{ end }} {{ 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: 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 }} {{ 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" >}} {{< code file="layouts/partials/post-tag-list.html" >}}
{{ with .Params.tags }} {{ 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. `apply` does not work when receiving the sequence as an argument through a pipeline.
{{% /note %}} {{% /note %}}
[chomp]: /functions/chomp/ "See documentation for the chomp function" [`chomp`]: /functions/strings/chomp/
[delimit]: /functions/delimit/ "See documentation for the delimit function" [`delimit`]: /functions/collections/delimit/
[functions]: /functions/ "See the full list of Hugo functions to see what can be passed as an argument to the apply function." [template function]: /functions/
[partials]: /templates/partials/ [`range`]: /functions/go-template/range/
[range]: /functions/range/ "Learn the importance of the range function, a fundamental keyword in both Hugo templates and the Go programming language."
@@ -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. description: Returns the elements of the last collection that are not in any of the others.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
namespace: collections function:
relatedFuncs: aliases: [complement]
returnType: any
signatures: ['collections.Complement COLLECTION [COLLECTION]...']
relatedFunctions:
- collections.Complement - collections.Complement
- collections.Intersect - collections.Intersect
- collections.SymDiff - collections.SymDiff
- collections.Union - collections.Union
signature: aliases: [/functions/complement]
- collections.Complement COLLECTION [COLLECTION]...
- complement COLLECTION [COLLECTION]...
--- ---
To find the elements within `$c3` that do not exist in `$c1` or `$c2`: 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 %}} {{% note %}}
Although the example above demonstrates the `complement` function, you could use the [`where`] function as well: Although the example above demonstrates the `complement` function, you could use the [`where`] function as well:
[`where`]: /functions/where/ [`where`]: /functions/collections/where
{{% /note %}} {{% /note %}}
```go-html-template ```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. description: Loops through any array, slice, or map and returns a string of all the values separated by a delimiter.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [delimit]
relatedFuncs: returnType: template.HTML
signatures: ['collections.Delimit COLLECTION DELIMITER [LAST]']
relatedFunctions:
- collections.Apply - collections.Apply
- collections.Delimit - collections.Delimit
- collections.In - collections.In
@@ -15,9 +19,7 @@ relatedFuncs:
- collections.Seq - collections.Seq
- collections.Slice - collections.Slice
- strings.Split - strings.Split
signature: aliases: [/functions/delimit]
- collections.Delimit COLLECTION DELIMITER [LAST]
- delimit COLLECTION DELIMITER [LAST]
--- ---
Delimit a slice: 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. description: Creates a map from a list of key and value pairs.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [dict]
relatedFuncs: returnType: mapany
signatures: ['collections.Dictionary KEY VALUE [KEY VALUE]...']
relatedFunctions:
- collections.Dictionary - collections.Dictionary
- collections.Group - collections.Group
- collections.Index - collections.Index
- collections.IsSet - collections.IsSet
- collections.Where - collections.Where
signature: aliases: [/functions/dict]
- collections.Dictionary KEY VALUE [KEY VALUE]...
- dict KEY VALUE [KEY VALUE]...
--- ---
`dict` is especially useful for passing more than one value to a partial template. `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. description: Prints a parameter if it is set.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [echoParam]
relatedFuncs: [] returnType: any
signature: signatures: [collections.EchoParam COLLECTION KEY]
- collections.EchoParam COLLECTION KEY relatedFunctions: []
- echoParam COLLECTION KEY aliases: [/functions/echoparam]
--- ---
For example, consider this site configuration: 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. description: Slices an array to the first N elements.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [first]
relatedFuncs: returnType: any
signatures: [collections.First LIMIT COLLECTION]
relatedFunctions:
- collections.After - collections.After
- collections.First - collections.First
- collections.Last - collections.Last
signature: aliases: [/functions/first]
- collections.First LIMIT COLLECTION
- first LIMIT COLLECTION
--- ---
`first` works in a similar manner to the [`limit` keyword in `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 ## `first` and `where` Together
Using `first` and [`where`][wherefunction] together can be very Using `first` and [`where`] together can be very
powerful. Below snippet gets a list of posts only from [**main powerful. Below snippet gets a list of posts only from [main
sections**][mainsections], sorts it by the `title` parameter, and then sections], sorts it by the `title` parameter, and then
ranges through only the first 5 posts in that list: ranges through only the first 5 posts in that list:
{{< code file="first-and-where-together.html" >}} {{< 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 [limitkeyword]: https://www.techonthenet.com/sql/select_limit.php
[wherefunction]: /functions/where/ [`where`]: /functions/collections/where
[mainsections]: /functions/where/#mainsections [main sections]: /functions/collections/where#mainsections
@@ -1,21 +1,23 @@
--- ---
title: group title: collections.Group
description: "`group` groups a list of pages." linkTitle: group
description: Groups a list of pages.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [group]
relatedFuncs: returnType: any
signatures: [PAGES | collections.Group KEY]
relatedFunctions:
- collections.Dictionary - collections.Dictionary
- collections.Group - collections.Group
- collections.Index - collections.Index
- collections.IsSet - collections.IsSet
- collections.Where - collections.Where
signature: aliases: [/functions/group]
- PAGES | collections.Group KEY
- PAGES | group KEY
--- ---
{{< code file="layouts/partials/groups.html" >}} {{< 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. description: Looks up the index(es) or key(s) of the data structure passed into it.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [index]
relatedFuncs: returnType: any
signatures:
- collections.Index COLLECTION INDEXES
- collections.Index COLLECTION KEYS
relatedFunctions:
- collections.Dictionary - collections.Dictionary
- collections.EchoParam - collections.EchoParam
- collections.Group - collections.Group
- collections.Index - collections.Index
- collections.IsSet - collections.IsSet
- collections.Where - collections.Where
signature: aliases: [/functions/index,/functions/index-function]
- collections.Index COLLECTION INDEXES
- collections.Index COLLECTION KEYS
- index COLLECTION INDEXES
- index COLLECTION KEYS
aliases: [/functions/index/]
--- ---
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.: 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. description: Returns the common elements of two arrays or slices, in the same order as the first array.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
namespace: collections function:
relatedFuncs: aliases: [intersect]
returnType: any
signatures: [collections.Intersect SET1 SET2]
relatedFunctions:
- collections.Complement - collections.Complement
- collections.Intersect - collections.Intersect
- collections.SymDiff - collections.SymDiff
- collections.Union - collections.Union
signature: aliases: [/functions/intersect]
- collections.Intersect SET1 SET2
- intersect SET1 SET2
--- ---
A useful example is to use it as `AND` filters when combined with where: 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. 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/ [partials]: /templates/partials/
@@ -1,21 +1,23 @@
--- ---
title: isset title: collections.IsSet
description: Returns true if the key exists within the collection. linkTitle: isset
description: Reports whether the key exists within the collection.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [isset]
relatedFuncs: returnType: bool
signatures: [collections.IsSet COLLECTION KEY]
relatedFunctions:
- collections.Dictionary - collections.Dictionary
- collections.Group - collections.Group
- collections.Index - collections.Index
- collections.IsSet - collections.IsSet
- collections.Where - collections.Where
signature: aliases: [/functions/isset]
- collections.IsSet COLLECTION KEY
- isset COLLECTION KEY
--- ---
For example, consider this site configuration: For example, consider this site configuration:
@@ -1,17 +1,18 @@
--- ---
title: keyVals title: collections.KeyVals
linkTitle: keyVals
description: Returns a KeyVals struct. description: Returns a KeyVals struct.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [keyVals]
relatedFuncs: [] returnType: KeyValues
signature: signatures: [collections.KeyVals KEY VALUES...]
- collections.KeyVals KEY VALUES... relatedFunctions: []
- keyVals KEY VALUES... 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. 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. description: Slices an array to the last N elements.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [last]
relatedFuncs: returnType: any
signatures: [collections.Last INDEX COLLECTION]
relatedFunctions:
- collections.After - collections.After
- collections.First - collections.First
- collections.Last - collections.Last
signature: aliases: [/functions/last]
- collections.Last INDEX COLLECTION
- last INDEX COLLECTION
--- ---
```go-html-template ```go-html-template
@@ -1,18 +1,20 @@
--- ---
title: merge title: collections.Merge
description: "Returns the result of merging two or more maps." linkTitle: merge
description: Returns the result of merging two or more maps.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [merge]
relatedFuncs: returnType: any
signatures: [collections.Merge MAP MAP...]
relatedFunctions:
- collections.Append - collections.Append
- collections.Merge - collections.Merge
signature: aliases: [/functions/merge]
- collections.Merge MAP MAP...
- merge MAP MAP...
--- ---
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. 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 %}} {{% 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 %}} {{% /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. description: Takes a set or slice of key-value pairs and returns a query string to be appended to URLs.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [querify]
relatedFuncs: returnType: string
signatures:
- collections.Querify KEY VALUE [KEY VALUE]...
- collections.Querify COLLECTION
relatedFunctions:
- collections.Querify - collections.Querify
- urlquery - urlquery
signature: aliases: [/functions/querify]
- collections.Querify KEY VALUE [KEY VALUE]...
- collections.Querify COLLECTION
- querify KEY VALUE [KEY VALUE]...
- querify COLLECTION
--- ---
`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. `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 title: collections.Reverse
description: Reverses the order of a collection. description: Reverses the order of a collection.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: []
relatedFuncs: returnType: any
signatures: [collections.Reverse COLLECTION]
relatedFunctions:
- collections.Apply - collections.Apply
- collections.Delimit - collections.Delimit
- collections.In - collections.In
- collections.Reverse - collections.Reverse
- collections.Seq - collections.Seq
- collections.Slice - collections.Slice
signature: aliases: [/functions/collections.reverse]
- collections.Reverse COLLECTION
--- ---
@@ -1,26 +1,27 @@
--- ---
title: seq title: collections.Seq
linkTitle: seq
description: Returns a slice of integers. description: Returns a slice of integers.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [seq]
relatedFuncs: returnType: '[]int'
signatures:
- collections.Seq LAST
- collections.Seq FIRST LAST
- collections.Seq FIRST INCREMENT LAST
relatedFunctions:
- collections.Apply - collections.Apply
- collections.Delimit - collections.Delimit
- collections.In - collections.In
- collections.Reverse - collections.Reverse
- collections.Seq - collections.Seq
- collections.Slice - collections.Slice
signature: aliases: [/functions/seq]
- collections.Seq LAST
- collections.Seq FIRST LAST
- collections.Seq FIRST INCREMENT LAST
- seq LAST
- seq FIRST LAST
- seq FIRST INCREMENT LAST
--- ---
```go-html-template ```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. description: Returns a random permutation of a given array or slice.
keywords: [ordering] keywords: [ordering]
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [shuffle]
relatedFuncs: returnType: any
signatures: [collections.Shuffle COLLECTION]
relatedFunctions:
- collections.Reverse - collections.Reverse
- collections.Shuffle - collections.Shuffle
- collections.Sort - collections.Sort
- collections.Uniq - collections.Uniq
signature: aliases: [/functions/shuffle]
- collections.Shuffle COLLECTION
- shuffle COLLECTION
--- ---
```go-html-template ```go-html-template
{{ shuffle (seq 1 2 3) }} → [3 1 2] {{ shuffle (seq 1 2 3) }} → [3 1 2]
{{ shuffle (slice "a" "b" "c") }} → [b a c] {{ 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. description: Creates a slice (array) of all passed arguments.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [slice]
relatedFuncs: returnType: any
signatures: [collections.Slice ITEM...]
relatedFunctions:
- collections.Append - collections.Append
- collections.Apply - collections.Apply
- collections.Delimit - collections.Delimit
@@ -15,19 +19,12 @@ relatedFuncs:
- collections.Reverse - collections.Reverse
- collections.Seq - collections.Seq
- collections.Slice - collections.Slice
signature: aliases: [/functions/slice]
- collections.Slice ITEM...
- slice ITEM...
--- ---
One use case is the concatenation of elements in combination with the [`delimit` function]: One use case is the concatenation of elements in combination with the [`delimit` function]:
{{< code file="slice.html" >}} ```go-html-template
{{ $sliceOfStrings := slice "foo" "bar" "buzz" }} {{ $s := slice "a" "b" "c" }}
<!-- returns the slice [ "foo", "bar", "buzz"] --> {{ $s }} → [a b c]
{{ delimit ($sliceOfStrings) ", " }} ```
<!-- returns the string "foo, bar, buzz" -->
{{< /code >}}
[`delimit` function]: /functions/delimit/
@@ -1,20 +1,22 @@
--- ---
title: sort title: collections.Sort
linkTitle: sort
description: Sorts slices, maps, and page collections. description: Sorts slices, maps, and page collections.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [sort]
relatedFuncs: returnType: any
signatures: ['collections.Sort COLLECTION [KEY] [ORDER]']
relatedFunctions:
- collections.Reverse - collections.Reverse
- collections.Shuffle - collections.Shuffle
- collections.Sort - collections.Sort
- collections.Uniq - collections.Uniq
signature: aliases: [/functions/sort]
- collections.Sort COLLECTION [KEY] [ORDER]
- sort COLLECTION [KEY] [ORDER]
--- ---
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. 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. 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] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
namespace: collections function:
relatedFuncs: aliases: [union]
returnType: any
signatures: [collections.Union SET1 SET2]
relatedFunctions:
- collections.Complement - collections.Complement
- collections.Intersect - collections.Intersect
- collections.SymDiff - collections.SymDiff
- collections.Union - collections.Union
signature: aliases: [/functions/union]
- collections.Union SET1 SET2
- union SET1 SET2
--- ---
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). 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. 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. description: Takes in a slice or array and returns a slice with duplicate elements removed.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [uniq]
relatedFuncs: returnType: any
signatures: [collections.Uniq COLLECTION]
relatedFunctions:
- collections.Reverse - collections.Reverse
- collections.Shuffle - collections.Shuffle
- collections.Sort - collections.Sort
- collections.Uniq - collections.Uniq
signature: aliases: [/functions/uniq]
- collections.Uniq COLLECTION
- uniq COLLECTION
--- ---
@@ -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. description: Filters an array to only the elements containing a matching value for a given field.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: collections aliases: [where]
relatedFuncs: returnType: any
signatures: ['collections.Where COLLECTION KEY [OPERATOR] MATCH']
relatedFunctions:
- collections.Dictionary - collections.Dictionary
- collections.Group - collections.Group
- collections.Index - collections.Index
- collections.IsSet - collections.IsSet
- collections.Where - collections.Where
signature: aliases: [/functions/where]
- collections.Where COLLECTION KEY [OPERATOR] MATCH
- where COLLECTION KEY [OPERATOR] MATCH
toc: true toc: true
--- ---
@@ -122,7 +124,7 @@ This example matches pages where the "foo" parameter begins with "ab":
{{ end }} {{ end }}
``` ```
{{% readfile file="/functions/common/regular-expressions.md" %}} {{% readfile file="/functions/_common/regular-expressions.md" %}}
## Use `where` with `first` ## Use `where` with `first`
@@ -184,5 +186,5 @@ The user can override the default:
mainSections = ["blog", "docs"] mainSections = ["blog", "docs"]
{{< /code-toggle >}} {{< /code-toggle >}}
[intersect]: /functions/intersect/ [intersect]: /functions/collections/intersect
[wherekeyword]: https://www.techonthenet.com/sql/where.php [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. description: Returns one of two arguments depending on the value of the control argument.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [cond]
relatedFuncs: returnType: any
signatures: [compare.Conditional CONTROL ARG1 ARG2]
relatedFunctions:
- compare.Conditional - compare.Conditional
- compare.Default - compare.Default
signature: aliases: [/functions/cond]
- compare.Conditional CONTROL ARG1 ARG2
- cond CONTROL ARG1 ARG2
--- ---
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. 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. description: Allows setting a default value that can be returned if a first value is not set.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [default]
relatedFuncs: returnType: any
signatures: [compare.Default DEFAULT INPUT]
relatedFunctions:
- compare.Conditional - compare.Conditional
- compare.Default - compare.Default
signature: aliases: [/functions/default]
- compare.Default DEFAULT INPUT
- default DEFAULT INPUT
--- ---
`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: `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. description: Returns the boolean truth of arg1 == arg2 || arg1 == arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [eq]
relatedFuncs: returnType: bool
signatures: ['compare.Eq ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/eq]
- compare.Eq ARG1 ARG2 [ARG...]
- eq ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,24 @@
--- ---
title: ge title: compare.Ge
linkTitle: ge
description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3. description: Returns the boolean truth of arg1 >= arg2 && arg1 >= arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [ge]
relatedFuncs: returnType: bool
signatures: ['compare.Ge ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/ge]
- compare.Ge ARG1 ARG2 [ARG...]
- ge ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,24 @@
--- ---
title: gt title: compare.Gt
linkTitle: gt
description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3. description: Returns the boolean truth of arg1 > arg2 && arg1 > arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [gt]
relatedFuncs: returnType: bool
signatures: ['compare.Gt ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/gt]
- compare.Gt ARG1 ARG2 [ARG...]
- gt ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,24 @@
--- ---
title: le title: compare.Le
linkTitle: le
description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3. description: Returns the boolean truth of arg1 <= arg2 && arg1 <= arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [le]
relatedFuncs: returnType: bool
signatures: ['compare.Le ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/le]
- compare.Le ARG1 ARG2 [ARG...]
- le ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,24 @@
--- ---
title: lt title: compare.Lt
linkTitle: lt
description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3. description: Returns the boolean truth of arg1 < arg2 && arg1 < arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: compare aliases: [lt]
relatedFuncs: returnType: bool
signatures: ['compare.Lt ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/lt]
- compare.Lt ARG1 ARG2 [ARG...]
- lt ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```go-html-template
@@ -1,21 +1,24 @@
--- ---
title: ne title: compare.Ne
linkTitle: ne
description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3. description: Returns the boolean truth of arg1 != arg2 && arg1 != arg3.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
namespace: compare function:
relatedFuncs: aliases: [ne]
returnType: bool
signatures: ['compare.Ne ARG1 ARG2 [ARG...]']
relatedFunctions:
- compare.Eq - compare.Eq
- compare.Ge - compare.Ge
- compare.Gt - compare.Gt
- compare.Le - compare.Le
- compare.Lt - compare.Lt
- compare.Ne - compare.Ne
signature: aliases: [/functions/ne]
- compare.Ne ARG1 ARG2 [ARG...]
- ne ARG1 ARG2 [ARG...]
--- ---
```go-html-template ```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 title: crypto.FNV32a
description: Returns the FNV (Fowler–Noll–Vo) 32 bit hash of a given string. description: Returns the FNV (Fowler–Noll–Vo) 32 bit hash of a given string.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: crypto aliases: []
relatedFuncs: returnType: int
signatures: [crypto.FNV32a STRING]
relatedFunctions:
- crypto.FNV32a - crypto.FNV32a
- crypto.HMAC - crypto.HMAC
- crypto.MD5 - crypto.MD5
- crypto.SHA1 - crypto.SHA1
- crypto.SHA256 - crypto.SHA256
signature: aliases: [/functions/crypto.fnv32a]
- crypto.FNV32a STRING
--- ---
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): 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. description: Returns a cryptographic hash that uses a key to sign a message.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: crypto aliases: [hmac]
relatedFuncs: returnType: string
signatures: ['crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]']
relatedFunctions:
- crypto.FNV32a - crypto.FNV32a
- crypto.HMAC - crypto.HMAC
- crypto.MD5 - crypto.MD5
- crypto.SHA1 - crypto.SHA1
- crypto.SHA256 - crypto.SHA256
signature: aliases: [/functions/hmac]
- crypto.HMAC HASH_TYPE KEY MESSAGE [ENCODING]
- hmac HASH_TYPE KEY MESSAGE [ENCODING]
--- ---
Set the `HASH_TYPE` argument to `md5`, `sha1`, `sha256`, or `sha512`. 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. description: hashes the given input and returns its MD5 checksum.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: crypto aliases: [md5]
relatedFuncs: returnType: string
signatures: [crypto.MD5 INPUT]
relatedFunctions:
- crypto.FNV32a - crypto.FNV32a
- crypto.HMAC - crypto.HMAC
- crypto.MD5 - crypto.MD5
- crypto.SHA1 - crypto.SHA1
- crypto.SHA256 - crypto.SHA256
signature: aliases: [/functions/md5]
- crypto.MD5 INPUT
- md5 INPUT
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,23 @@
--- ---
title: sha1 title: crypto.SHA1
linkTitle: sha1
description: Hashes the given input and returns its SHA1 checksum. description: Hashes the given input and returns its SHA1 checksum.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: crypto aliases: [sha1]
relatedFuncs: returnType: string
signatures: [crypto.SHA1 INPUT]
relatedFunctions:
- crypto.FNV32a - crypto.FNV32a
- crypto.HMAC - crypto.HMAC
- crypto.MD5 - crypto.MD5
- crypto.SHA1 - crypto.SHA1
- crypto.SHA256 - crypto.SHA256
signature: aliases: [/functions/sha,/functions/sha1]
- crypto.SHA1 INPUT
- sha1 INPUT
aliases: [sha]
--- ---
```go-html-template ```go-html-template
@@ -1,22 +1,23 @@
--- ---
title: sha256 title: crypto.SHA256
linkTitle: sha256
description: Hashes the given input and returns its SHA256 checksum. description: Hashes the given input and returns its SHA256 checksum.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: crypto aliases: [sha256]
relatedFuncs: returnType: string
signatures: [crypto.SHA256 INPUT]
relatedFunctions:
- crypto.FNV32a - crypto.FNV32a
- crypto.HMAC - crypto.HMAC
- crypto.MD5 - crypto.MD5
- crypto.SHA1 - crypto.SHA1
- crypto.SHA256 - crypto.SHA256
signature: aliases: [/functions/sha256]
- crypto.SHA256 INPUT
- sha256 INPUT
aliases: [sha]
--- ---
```go-html-template ```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:
* [Go’s 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. description: Returns the base64 decoding of the given content.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: encoding aliases: [base64Decode]
relatedFuncs: returnType: string
- encoding.Base64Decode signatures: [encoding.Base64Decode INPUT]
- encoding.Base64Encode signatures:
signature: -
- encoding.Base64Decode INPUT
- base64Decode INPUT - base64Decode INPUT
aliases: [/functions/base64Decode]
--- ---
```go-html-template ```go-html-template
@@ -1,19 +1,20 @@
--- ---
title: base64Encode title: encoding.Base64Encode
linkTitle: base64Encode
description: Returns the base64 decoding of the given content. description: Returns the base64 decoding of the given content.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: encoding aliases: [base64Encode]
relatedFuncs: returnType: string
signatures: [encoding.Base64Encode INPUT]
relatedFunctions:
- encoding.Base64Decode - encoding.Base64Decode
- encoding.Base64Encode - encoding.Base64Encode
signature: aliases: [/functions/base64, /functions/base64Encode]
- encoding.Base64Encode INPUT
- base64Encode INPUT
aliases: ['/functions/base64']
--- ---
```go-html-template ```go-html-template
@@ -1,21 +1,23 @@
--- ---
title: jsonify title: encoding.Jsonify
linkTitle: jsonify
description: Encodes a given object to JSON. description: Encodes a given object to JSON.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: encoding aliases: [jsonify]
relatedFuncs: returnType: template.HTML
signatures:
- encoding.Jsonify INPUT
- encoding.Jsonify OPTIONS INPUT
relatedFunctions:
- encoding.Jsonify - encoding.Jsonify
- transform.Remarshal - transform.Remarshal
- transform.Unmarshal - transform.Unmarshal
signature: aliases: [/functions/jsonify]
- encoding.Jsonify INPUT
- encoding.Jsonify OPTIONS INPUT
- jsonify INPUT
- jsonify OPTIONS INPUT
--- ---
To customize the printing of the JSON, pass a map of options as the first 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" " ") }} {{ dict "title" .Title "content" .Plain | jsonify (dict "prefix" " " "indent" " ") }}
``` ```
## Jsonify options ## Options
indent ("") indent ("")
: Indentation to use. : Indentation to use.
@@ -1,19 +1,21 @@
--- ---
title: errorf title: fmt.Errorf
linkTitle: errorf
description: Log an ERROR from a template. description: Log an ERROR from a template.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [errorf]
relatedFuncs: returnType: string
signatures: ['fmt.Errorf FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf - fmt.Errorf
- fmt.Erroridf - fmt.Erroridf
- fmt.Warnf - fmt.Warnf
signature: aliases: [/functions/errorf]
- fmt.Errorf FORMAT [INPUT]
- errorf FORMAT [INPUT]
--- ---
The documentation for [Go's fmt package] describes the structure and content of the format string. 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. Use the [`erroridf`] function to allow optional supression of specific errors.
[`erroridf`]: /functions/erroridf/ [`erroridf`]: /functions/fmt/erroridf
[`printf`]: /functions/printf/ [`printf`]: /functions/fmt/printf
[Go's fmt package]: https://pkg.go.dev/fmt [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. description: Log a suppressable ERROR from a template.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [erroridf]
relatedFuncs: returnType: string
signatures: ['fmt.Erroridf ID FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf - fmt.Errorf
- fmt.Erroridf - fmt.Erroridf
- fmt.Warnf - fmt.Warnf
signature: aliases: [/functions/erroridf]
- fmt.Erroridf ID FORMAT [INPUT]
- erroridf ID FORMAT [INPUT]
--- ---
The documentation for [Go's fmt package] describes the structure and content of the format string. 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"] ignoreErrors = ["error-42"]
{{< /code-toggle >}} {{< /code-toggle >}}
[`errorf`]: /functions/errorf/ [`errorf`]: /functions/fmt/errorf
[Go's fmt package]: https://pkg.go.dev/fmt [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. description: Prints the default representation of the given arguments using the standard `fmt.Print` function.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [print]
relatedFuncs: returnType: string
signatures: [fmt.Print INPUT]
relatedFunctions:
- fmt.Print - fmt.Print
- fmt.Printf - fmt.Printf
- fmt.Println - fmt.Println
signature: aliases: [/functions/print]
- fmt.Print INPUT
- print INPUT
--- ---
```go-html-template ```go-html-template
@@ -1,19 +1,21 @@
--- ---
title: printf title: fmt.Printf
linkTitle: printf
description: Formats a string using the standard `fmt.Sprintf` function. description: Formats a string using the standard `fmt.Sprintf` function.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [printf]
relatedFuncs: returnType: string
signatures: ['fmt.Printf FORMAT [INPUT]']
relatedFunctions:
- fmt.Print - fmt.Print
- fmt.Printf - fmt.Printf
- fmt.Println - fmt.Println
signature: aliases: [/functions/printf]
- fmt.Printf FORMAT [INPUT]
- printf FORMAT [INPUT]
--- ---
The documentation for [Go's fmt package] describes the structure and content of the format string. 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. description: Prints the default representation of the given argument using the standard `fmt.Print` function and enforces a linebreak.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [println]
relatedFuncs: returnType: string
signatures: [fmt.Println INPUT]
relatedFunctions:
- fmt.Print - fmt.Print
- fmt.Printf - fmt.Printf
- fmt.Println - fmt.Println
signature: aliases: [/functions/println]
- fmt.Println INPUT
- println INPUT
--- ---
```go-html-template ```go-html-template
@@ -1,19 +1,21 @@
--- ---
title: warnf title: fmt.Warnf
linkTitle: warnf
description: Log a WARNING from a template. description: Log a WARNING from a template.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: fmt aliases: [warnf]
relatedFuncs: returnType: string
signatures: ['fmt.Warnf FORMAT [INPUT]']
relatedFunctions:
- fmt.Errorf - fmt.Errorf
- fmt.Erroridf - fmt.Erroridf
- fmt.Warnf - fmt.Warnf
signature: aliases: [/functions/warnf]
- fmt.Warnf FORMAT [INPUT]
- warnf FORMAT [INPUT]
--- ---
The documentation for [Go's fmt package] describes the structure and content of the format string. 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" }} {{ warnf "Copyright notice missing from site configuration" }}
``` ```
[`printf`]: /functions/printf/ [`printf`]: /functions/fmt/printf
[Go's fmt package]: https://pkg.go.dev/fmt [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 title: len
description: Returns the length of a string, slice, map, or collection. description: Returns the length of a string, slice, map, or collection.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: text/template aliases: []
relatedFuncs: returnType: int
signatures: [len INPUT]
relatedFunctions:
- len - len
- strings.Count - strings.Count
- strings.CountRunes - strings.CountRunes
- strings.CountWords - strings.CountWords
- strings.RuneCount - strings.RuneCount
signature: ["len INPUT"] aliases: [/functions/len]
--- ---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
With a string: With a string:
```go-html-template ```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 title: urlquery
description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query. description: Returns the escaped value of the textual representation of its arguments in a form suitable for embedding in a URL query.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: text/template aliases: []
relatedFuncs: returnType: string
signatures: ['urlquery INPUT [INPUT]...']
relatedFunctions:
- collections.Querify - collections.Querify
- urlquery - urlquery
signature: aliases: [/functions/urlquery]
- urlquery INPUT [INPUT]...
--- ---
{{% readfile file="/functions/_common/go-template-functions.md" %}}
This template code: This template code:
```go-html-template ```go-html-template
@@ -2,23 +2,27 @@
title: with title: with
description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent or empty. description: Rebinds the context (`.`) within its scope and skips the block if the variable is absent or empty.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: text/template aliases: []
relatedFuncs: returnType: any
signatures: [with PIPELINE]
relatedFunctions:
- with - with
- range - range
signature: aliases: [/functions/with]
- with INPUT
--- ---
{{% 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. 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. 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: 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 title: hugo
description: The `hugo` function provides easy access to Hugo-related data. description: Provides global access to Hugo-related data.
keywords: []
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: global aliases: []
relatedFuncs: [] returnType:
signature: [hugo] signatures: [hugo]
relatedFunctions:
- hugo
- page
- site
aliases: [/functions/hugo]
--- ---
`hugo` returns an instance that contains the following functions: `hugo` returns an instance that contains the following functions:
+2 -1
View File
@@ -2,6 +2,7 @@
title: Image filters title: Image filters
description: The images namespace provides a list of filters and other image related functions. description: The images namespace provides a list of filters and other image related functions.
categories: [functions] categories: [functions]
keywords: []
aliases: [/functions/imageconfig/] aliases: [/functions/imageconfig/]
menu: menu:
docs: docs:
@@ -270,4 +271,4 @@ favicon.ico: {{ .Width }} x {{ .Height }}
{{ end }} {{ 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. description: Returns the humanized version of an argument with the first letter capitalized.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: inflect aliases: [humanize]
relatedFuncs: returnType: string
signatures: [inflect.Humanize INPUT]
relatedFunctions:
- inflect.Humanize - inflect.Humanize
- inflect.Pluralize - inflect.Pluralize
- inflect.Singularize - inflect.Singularize
signature: aliases: [/functions/humanize]
- inflect.Humanize INPUT
- humanize INPUT
--- ---
If the input is either an int64 value or the string representation of an integer, humanize returns the number with the proper ordinal appended. 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 description: Pluralizes the given word according to a set of common English pluralization rules
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: inflect aliases: [pluralize]
relatedFuncs: returnType: string
signatures: [inflect.Pluralize INPUT]
relatedFunctions:
- inflect.Humanize - inflect.Humanize
- inflect.Pluralize - inflect.Pluralize
- inflect.Singularize - inflect.Singularize
signature: aliases: [/functions/pluralize]
- inflect.Pluralize INPUT
- pluralize INPUT
--- ---
```go-html-template ```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. description: Converts a word according to a set of common English singularization rules.
categories: [functions] categories: [functions]
keywords: []
menu: menu:
docs: docs:
parent: functions parent: functions
keywords: [] function:
namespace: inflect aliases: [singularize]
relatedFuncs: returnType: string
signatures: [inflect.Singularize INPUT]
relatedFunctions:
- inflect.Humanize - inflect.Humanize
- inflect.Pluralize - inflect.Pluralize
- inflect.Singularize - inflect.Singularize
signature: aliases: [/functions/singularize]
- inflect.Singularize INPUT
- singularize INPUT
--- ---
`{{ "cats" | singularize }}` → "cat" ```go-html-template
{{ "cats" | singularize }} → "cat"
```
See also the `.Data.Singular` [taxonomy variable](/variables/taxonomy/) for singularizing taxonomy names. 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 %}}
Loaded 100 of 252 files, more files were not shown because too many files have changed in this diff. Show more