mirror of
https://github.com/gohugoio/hugo.git
synced 2025-08-20 21:31:32 +02:00
Merge commit '7c62d6ef1654c0383eae474d3bd9ddf7754c1f30'
This commit is contained in:
@@ -13,11 +13,11 @@ relatedfuncs: [now]
|
||||
```go-html-template
|
||||
{{ $d := "2022-01-01" | time.AsTime }}
|
||||
|
||||
{{ $d.AddDate 0 0 1 | time.Format "2006-01-02" }} --> 2022-01-02
|
||||
{{ $d.AddDate 0 1 1 | time.Format "2006-01-02" }} --> 2022-02-02
|
||||
{{ $d.AddDate 1 1 1 | time.Format "2006-01-02" }} --> 2023-02-02
|
||||
{{ $d.AddDate 0 0 1 | time.Format "2006-01-02" }} → 2022-01-02
|
||||
{{ $d.AddDate 0 1 1 | time.Format "2006-01-02" }} → 2022-02-02
|
||||
{{ $d.AddDate 1 1 1 | time.Format "2006-01-02" }} → 2023-02-02
|
||||
|
||||
{{ $d.AddDate -1 -1 -1 | time.Format "2006-01-02" }} --> 2020-11-30
|
||||
{{ $d.AddDate -1 -1 -1 | time.Format "2006-01-02" }} → 2020-11-30
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
@@ -28,11 +28,11 @@ See [this explanation](https://github.com/golang/go/issues/31145#issuecomment-47
|
||||
|
||||
```go-html-template
|
||||
{{ $d := "2023-01-31" | time.AsTime }}
|
||||
{{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} --> 2023-03-03
|
||||
{{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} → 2023-03-03
|
||||
|
||||
{{ $d := "2024-01-31" | time.AsTime }}
|
||||
{{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} --> 2024-03-02
|
||||
{{ $d.AddDate 0 1 0 | time.Format "2006-01-02" }} → 2024-03-02
|
||||
|
||||
{{ $d := "2024-02-29" | time.AsTime }}
|
||||
{{ $d.AddDate 1 0 0 | time.Format "2006-01-02" }} --> 2025-03-01
|
||||
{{ $d.AddDate 1 0 0 | time.Format "2006-01-02" }} → 2025-03-01
|
||||
```
|
||||
|
@@ -33,7 +33,7 @@ You can use `after` in combination with the [`first` function] and Hugo's [power
|
||||
<h2>Featured Article</h2>
|
||||
{{ range first 1 .Pages.ByPublishDate.Reverse }}
|
||||
<header>
|
||||
<h3><a href="{{ . Permalink }}">{{ .Title }}</a></h3>
|
||||
<h3><a href="{{ .Permalink }}">{{ .Title }}</a></h3>
|
||||
</header>
|
||||
<p>{{ .Description }}</p>
|
||||
{{ end }}
|
||||
|
@@ -15,10 +15,10 @@ If [Goldmark](/getting-started/configuration-markup#goldmark) is set as `default
|
||||
Since the `defaultMarkdownHandler` and this template function use the same sanitizing logic, you can use the latter to determine the ID of a header for linking with anchor tags.
|
||||
|
||||
```go-html-template
|
||||
{{ anchorize "This is a header" }} --> "this-is-a-header"
|
||||
{{ anchorize "This is also a header" }} --> "this-is-also----a-header"
|
||||
{{ anchorize "main.go" }} --> "maingo"
|
||||
{{ anchorize "Article 123" }} --> "article-123"
|
||||
{{ anchorize "<- Let's try this, shall we?" }} --> "--lets-try-this-shall-we"
|
||||
{{ anchorize "Hello, 世界" }} --> "hello-世界"
|
||||
{{ anchorize "This is a header" }} → "this-is-a-header"
|
||||
{{ anchorize "This is also a header" }} → "this-is-also----a-header"
|
||||
{{ anchorize "main.go" }} → "maingo"
|
||||
{{ anchorize "Article 123" }} → "article-123"
|
||||
{{ anchorize "<- Let's try this, shall we?" }} → "--lets-try-this-shall-we"
|
||||
{{ anchorize "Hello, 世界" }} → "hello-世界"
|
||||
```
|
||||
|
@@ -26,4 +26,12 @@ The same example appending a slice to a slice:
|
||||
{{ $s = $s | append (slice "d" "e") }}
|
||||
```
|
||||
|
||||
If a slice contains other slices, further slices will be appended as values:
|
||||
|
||||
```go-html-template
|
||||
{{ $s := slice (slice "a" "b") (slice "c" "d") }}
|
||||
{{ $s = $s | append (slice "e" "f") (slice "g" "h") }}
|
||||
{{/* $s now contains a [][]string containing four slices: ["a" "b"], ["c" "d"], ["e" "f"], and ["g" "h"] */}}
|
||||
```
|
||||
|
||||
The `append` function works for all types, including `Pages`.
|
||||
|
3
docs/content/en/functions/common/index.md
Normal file
3
docs/content/en/functions/common/index.md
Normal file
@@ -0,0 +1,3 @@
|
||||
+++
|
||||
headless = true
|
||||
+++
|
8
docs/content/en/functions/common/regular-expressions.md
Normal file
8
docs/content/en/functions/common/regular-expressions.md
Normal file
@@ -0,0 +1,8 @@
|
||||
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
|
||||
|
||||
Go's regular expression package implements the [RE2 syntax]. The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats]. Note that the RE2 `\C` escape sequence is not supported.
|
||||
|
||||
[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
|
||||
[PCRE]: https://www.pcre.org/
|
||||
[RE2 syntax]: https://github.com/google/re2/wiki/Syntax/
|
||||
[string literal]: https://go.dev/ref/spec#String_literals
|
@@ -24,11 +24,11 @@ content/
|
||||
The function returns these values:
|
||||
|
||||
```go-html-template
|
||||
{{ os.FileExists "content" }} --> true
|
||||
{{ os.FileExists "content/news" }} --> true
|
||||
{{ os.FileExists "content/news/article-1" }} --> false
|
||||
{{ os.FileExists "content/news/article-1.md" }} --> true
|
||||
{{ os.FileExists "news" }} --> true
|
||||
{{ os.FileExists "news/article-1" }} --> false
|
||||
{{ os.FileExists "news/article-1.md" }} --> true
|
||||
{{ os.FileExists "content" }} → true
|
||||
{{ os.FileExists "content/news" }} → true
|
||||
{{ os.FileExists "content/news/article-1" }} → false
|
||||
{{ os.FileExists "content/news/article-1.md" }} → true
|
||||
{{ os.FileExists "news" }} → true
|
||||
{{ os.FileExists "news/article-1" }} → false
|
||||
{{ os.FileExists "news/article-1.md" }} → true
|
||||
```
|
||||
|
@@ -13,21 +13,7 @@ relatedfuncs: [findRESubmatch, replaceRE]
|
||||
---
|
||||
By default, `findRE` finds all matches. You can limit the number of matches with an optional LIMIT parameter.
|
||||
|
||||
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
|
||||
|
||||
[string literal]: https://go.dev/ref/spec#String_literals
|
||||
|
||||
This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
|
||||
|
||||
[RE2]: https://github.com/google/re2/
|
||||
[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
|
||||
|
||||
{{% note %}}
|
||||
The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
|
||||
|
||||
[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
|
||||
[PCRE]: https://www.pcre.org/
|
||||
{{% /note %}}
|
||||
{{% readfile file="/functions/common/regular-expressions.md" %}}
|
||||
|
||||
This example returns a slice of all second level headings (`h2` elements) within the rendered `.Content`:
|
||||
|
||||
|
@@ -14,21 +14,7 @@ relatedfuncs: [findRE, replaceRE]
|
||||
|
||||
By default, `findRESubmatch` finds all matches. You can limit the number of matches with an optional LIMIT parameter. A return value of nil indicates no match.
|
||||
|
||||
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
|
||||
|
||||
[string literal]: https://go.dev/ref/spec#String_literals
|
||||
|
||||
This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
|
||||
|
||||
[RE2]: https://github.com/google/re2/
|
||||
[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
|
||||
|
||||
{{% note %}}
|
||||
The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
|
||||
|
||||
[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
|
||||
[PCRE]: https://www.pcre.org/
|
||||
{{% /note %}}
|
||||
{{% readfile file="/functions/common/regular-expressions.md" %}}
|
||||
|
||||
## Demonstrative examples
|
||||
|
||||
|
@@ -12,8 +12,8 @@ relatedfuncs: []
|
||||
Examples:
|
||||
|
||||
```go-html-template
|
||||
{{ os.Getenv "HOME" }} --> /home/victor
|
||||
{{ os.Getenv "USER" }} --> victor
|
||||
{{ os.Getenv "HOME" }} → /home/victor
|
||||
{{ os.Getenv "USER" }} → victor
|
||||
```
|
||||
|
||||
You can pass values when building your site:
|
||||
@@ -31,8 +31,8 @@ hugo
|
||||
And then retrieve the values within a template:
|
||||
|
||||
```go-html-template
|
||||
{{ os.Getenv "MY_VAR1" }} --> foo
|
||||
{{ os.Getenv "MY_VAR2" }} --> bar
|
||||
{{ os.Getenv "MY_VAR1" }} → foo
|
||||
{{ os.Getenv "MY_VAR2" }} → bar
|
||||
```
|
||||
|
||||
With Hugo v0.91.0 and later, you must explicitly allow access to environment variables. For details, review [Hugo's Security Policy](/about/security-model/#security-policy). By default, environment variables beginning with `HUGO_` are allowed when using the `os.Getenv` function.
|
||||
|
@@ -1,20 +0,0 @@
|
||||
---
|
||||
title: hasprefix
|
||||
description: Tests whether a string begins with prefix.
|
||||
date: 2017-02-01
|
||||
publishdate: 2017-02-01
|
||||
lastmod: 2017-02-01
|
||||
categories: [functions]
|
||||
menu:
|
||||
docs:
|
||||
parent: "functions"
|
||||
keywords: [strings]
|
||||
signature: ["hasPrefix STRING PREFIX"]
|
||||
workson: []
|
||||
hugoversion:
|
||||
relatedfuncs: [hasSuffix]
|
||||
deprecated: false
|
||||
aliases: []
|
||||
---
|
||||
|
||||
* `{{ hasPrefix "Hugo" "Hu" }}` → true
|
@@ -1,21 +0,0 @@
|
||||
---
|
||||
title: hassuffix
|
||||
linkTitle: hasSuffix
|
||||
description: Tests whether a string ends with suffix.
|
||||
date: 2023-03-01
|
||||
publishdate: 2023-03-01
|
||||
lastmod: 2023-03-01
|
||||
categories: [functions]
|
||||
menu:
|
||||
docs:
|
||||
parent: "functions"
|
||||
keywords: [strings]
|
||||
signature: ["hasSuffix STRING SUFFIX"]
|
||||
workson: []
|
||||
hugoversion:
|
||||
relatedfuncs: [hasPrefix]
|
||||
deprecated: false
|
||||
aliases: []
|
||||
---
|
||||
|
||||
* `{{ hasSuffix "Hugo" "go" }}` → true
|
@@ -27,9 +27,9 @@ Example 1
|
||||
```go-html-template
|
||||
{{ $merged := merge $m1 $m2 $m3 }}
|
||||
|
||||
{{ $merged.x }} --> baz
|
||||
{{ $merged.y }} --> wobble
|
||||
{{ $merged.z.a }} --> huey
|
||||
{{ $merged.x }} → baz
|
||||
{{ $merged.y }} → wobble
|
||||
{{ $merged.z.a }} → huey
|
||||
```
|
||||
|
||||
Example 2
|
||||
@@ -37,9 +37,9 @@ Example 2
|
||||
```go-html-template
|
||||
{{ $merged := merge $m3 $m2 $m1 }}
|
||||
|
||||
{{ $merged.x }} --> foo
|
||||
{{ $merged.y }} --> wibble
|
||||
{{ $merged.z.a }} --> huey
|
||||
{{ $merged.x }} → foo
|
||||
{{ $merged.y }} → wibble
|
||||
{{ $merged.z.a }} → huey
|
||||
```
|
||||
|
||||
Example 3
|
||||
@@ -47,9 +47,9 @@ Example 3
|
||||
```go-html-template
|
||||
{{ $merged := merge $m2 $m3 $m1 }}
|
||||
|
||||
{{ $merged.x }} --> foo
|
||||
{{ $merged.y }} --> wobble
|
||||
{{ $merged.z.a }} --> huey
|
||||
{{ $merged.x }} → foo
|
||||
{{ $merged.y }} → wobble
|
||||
{{ $merged.z.a }} → huey
|
||||
```
|
||||
|
||||
Example 4
|
||||
@@ -57,9 +57,9 @@ Example 4
|
||||
```go-html-template
|
||||
{{ $merged := merge $m1 $m3 $m2 }}
|
||||
|
||||
{{ $merged.x }} --> bar
|
||||
{{ $merged.y }} --> wibble
|
||||
{{ $merged.z.a }} --> huey
|
||||
{{ $merged.x }} → bar
|
||||
{{ $merged.y }} → wibble
|
||||
{{ $merged.z.a }} → huey
|
||||
```
|
||||
|
||||
{{% note %}}
|
||||
|
@@ -13,13 +13,13 @@ The `os.Stat` function attempts to resolve the path relative to the root of your
|
||||
|
||||
```go-html-template
|
||||
{{ $f := os.Stat "README.md" }}
|
||||
{{ $f.IsDir }} --> false (bool)
|
||||
{{ $f.ModTime }} --> 2021-11-25 10:06:49.315429236 -0800 PST (time.Time)
|
||||
{{ $f.Name }} --> README.md (string)
|
||||
{{ $f.Size }} --> 241 (int64)
|
||||
{{ $f.IsDir }} → false (bool)
|
||||
{{ $f.ModTime }} → 2021-11-25 10:06:49.315429236 -0800 PST (time.Time)
|
||||
{{ $f.Name }} → README.md (string)
|
||||
{{ $f.Size }} → 241 (int64)
|
||||
|
||||
{{ $d := os.Stat "content" }}
|
||||
{{ $d.IsDir }} --> true (bool)
|
||||
{{ $d.IsDir }} → true (bool)
|
||||
```
|
||||
|
||||
Details of the `FileInfo` structure are available in the [Go documentation](https://pkg.go.dev/io/fs#FileInfo).
|
||||
|
@@ -26,7 +26,7 @@ This template code:
|
||||
|
||||
```go-html-template
|
||||
{{ range os.ReadDir "content" }}
|
||||
{{ .Name }} --> {{ .IsDir }}
|
||||
{{ .Name }} → {{ .IsDir }}
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
|
@@ -13,21 +13,7 @@ relatedfuncs: [findRE, FindRESubmatch, replace]
|
||||
---
|
||||
By default, `replaceRE` replaces all matches. You can limit the number of matches with an optional LIMIT parameter.
|
||||
|
||||
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
|
||||
|
||||
[string literal]: https://go.dev/ref/spec#String_literals
|
||||
|
||||
This function uses the [RE2] regular expression library. See the [RE2 syntax documentation] for details. Note that the RE2 `\C` escape sequence is not supported.
|
||||
|
||||
[RE2]: https://github.com/google/re2/
|
||||
[RE2 syntax documentation]: https://github.com/google/re2/wiki/Syntax/
|
||||
|
||||
{{% note %}}
|
||||
The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
|
||||
|
||||
[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
|
||||
[PCRE]: https://www.pcre.org/
|
||||
{{% /note %}}
|
||||
{{% readfile file="/functions/common/regular-expressions.md" %}}
|
||||
|
||||
This example replaces two or more consecutive hyphens with a single hyphen:
|
||||
|
||||
|
@@ -72,7 +72,7 @@ Get the value of a given key.
|
||||
|
||||
Add a given value to existing value(s) of the given key.
|
||||
|
||||
For single values, `Add` accepts values that support Go's `+` operator. If the first `Add` for a key is an array or slice, the following adds will be appended 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/append/) to that list.
|
||||
|
||||
```go-html-template
|
||||
{{ $scratch.Add "greetings" "Hello" }}
|
||||
|
27
docs/content/en/functions/strings.ContainsNonSpace.md
Normal file
27
docs/content/en/functions/strings.ContainsNonSpace.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: strings.ContainsNonSpace
|
||||
description: Reports whether a string contains any non-space characters as defined by Unicode’s White Space property.
|
||||
categories: [functions]
|
||||
menu:
|
||||
docs:
|
||||
parent: functions
|
||||
keywords: [whitespace space]
|
||||
signature: ["strings.ContainsNonSpace STRING"]
|
||||
relatedfuncs: ["strings.Contains","strings.ContainsAny"]
|
||||
---
|
||||
|
||||
```go-html-template
|
||||
{{ strings.ContainsNonSpace "\n" }} → false
|
||||
{{ strings.ContainsNonSpace " " }} → false
|
||||
{{ strings.ContainsNonSpace "\n abc" }} → true
|
||||
```
|
||||
|
||||
Common white space characters include:
|
||||
|
||||
```text
|
||||
'\t', '\n', '\v', '\f', '\r', ' '
|
||||
```
|
||||
|
||||
See the [Unicode Character Database] for a complete list.
|
||||
|
||||
[Unicode Character Database]: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt
|
@@ -62,12 +62,12 @@ The following example lists the items of an RSS feed:
|
||||
|
||||
```go-html-template
|
||||
{{ with resources.GetRemote "https://example.com/rss.xml" | transform.Unmarshal }}
|
||||
{{ range .channel.item }}
|
||||
<strong>{{ .title | plainify | htmlUnescape }}</strong><br />
|
||||
<p>{{ .description | plainify | htmlUnescape }}</p>
|
||||
{{ $link := .link | plainify | htmlUnescape }}
|
||||
<a href="{{ $link }}">{{ $link }}</a><br />
|
||||
<hr>
|
||||
{{ end }}
|
||||
{{ range .channel.item }}
|
||||
<strong>{{ .title | plainify | htmlUnescape }}</strong><br>
|
||||
<p>{{ .description | plainify | htmlUnescape }}</p>
|
||||
{{ $link := .link | plainify | htmlUnescape }}
|
||||
<a href="{{ $link }}">{{ $link }}</a><br>
|
||||
<hr>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
```
|
||||
|
@@ -11,5 +11,5 @@ signature: [uniq SET]
|
||||
|
||||
|
||||
```go-html-template
|
||||
{{ slice 1 3 2 1 | uniq }} --> [1 3 2]
|
||||
{{ slice 1 3 2 1 | uniq }} → [1 3 2]
|
||||
```
|
||||
|
@@ -22,20 +22,20 @@ The following might be used as a partial within a [single page template][singlet
|
||||
|
||||
{{< code file="layouts/partials/content-header.html" >}}
|
||||
<header>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Params.location }}
|
||||
<div><a href="/locations/{{ . | urlize }}">{{ . }}</a></div>
|
||||
{{ end }}
|
||||
<!-- Creates a list of tags for the content and links to each of their pages -->
|
||||
{{ with .Params.tags }}
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ with .Params.location }}
|
||||
<div><a href="/locations/{{ . | urlize }}">{{ . }}</a></div>
|
||||
{{ end }}
|
||||
<!-- Creates a list of tags for the content and links to each of their pages -->
|
||||
{{ with .Params.tags }}
|
||||
<ul>
|
||||
{{ range .}}
|
||||
<li>
|
||||
<a href="/tags/{{ . | urlize }}">{{ . }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ range .}}
|
||||
<li>
|
||||
<a href="/tags/{{ . | urlize }}">{{ . }}</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</header>
|
||||
{{< /code >}}
|
||||
|
||||
|
@@ -109,25 +109,12 @@ You can also put the returned value of the `where` clauses into a variable:
|
||||
This example matches pages where the "foo" parameter begins with "ab":
|
||||
|
||||
```go-html-template
|
||||
{{ range where site.RegularPages "Params.foo" "like" "^ab" }}
|
||||
{{ range where site.RegularPages "Params.foo" "like" `^ab` }}
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
When specifying the regular expression, use a raw [string literal] (backticks) instead of an interpreted string literal (double quotes) to simplify the syntax. With an interpreted string literal you must escape backslashes.
|
||||
|
||||
[string literal]: https://go.dev/ref/spec#String_literals
|
||||
|
||||
Go's regular expression package implements the [RE2 syntax]. Note that the RE2 `\C` escape sequence is not supported.
|
||||
|
||||
[RE2 syntax]: https://github.com/google/re2/wiki/Syntax/
|
||||
|
||||
{{% note %}}
|
||||
The RE2 syntax is a subset of that accepted by [PCRE], roughly speaking, and with various [caveats].
|
||||
|
||||
[caveats]: https://swtch.com/~rsc/regexp/regexp3.html#caveats
|
||||
[PCRE]: https://www.pcre.org/
|
||||
{{% /note %}}
|
||||
{{% readfile file="/functions/common/regular-expressions.md" %}}
|
||||
|
||||
## Use `where` with `first`
|
||||
|
||||
|
Reference in New Issue
Block a user