diff --git a/docs/content/templates/functions.md b/docs/content/templates/functions.md
index c02841f4b..6dbc58bf7 100644
--- a/docs/content/templates/functions.md
+++ b/docs/content/templates/functions.md
@@ -26,17 +26,36 @@ and other basic tools; these are listed in the
## General
-### isset
-Return true if the parameter is set.
-Takes either a slice, array or channel and an index or a map and a key as input.
+### delimit
+Loops through any array, slice or map and returns a string of all the values separated by the delimiter. There is an optional third parameter that lets you choose a different delimiter to go between the last two values.
+Maps will be sorted by the keys, and only a slice of the values will be returned, keeping a consistent output order.
+
+Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
+
+e.g.
+
+ // Front matter
+ +++
+ tags: [ "tag1", "tag2", "tag3" ]
+ +++
+
+ // Used anywhere in a template
+ Tags: {{ delimit .Params.tags ", " }}
+
+ // Outputs Tags: tag1, tag2, tag3
+
+ // Example with the optional "last" parameter
+ Tags: {{ delimit .Params.tags ", " " and " }}
+
+ // Outputs Tags: tag1, tag2 and tag3
-e.g. `{{ if isset .Params "project_url" }} {{ index .Params "project_url" }}{{ end }}`
### echoParam
If parameter is set, then echo it.
e.g. `{{echoParam .Params "project_url" }}`
+
### eq
Return true if the parameters are equal.
@@ -44,6 +63,7 @@ e.g.
{{ if eq .Section "blog" }}current{{ end }}
+
### first
Slices an array to only the first X elements.
@@ -55,6 +75,93 @@ e.g.
{{ .Render "summary" }}
{{ end }}
+
+### in
+Checks if an element is in an array (or slice) and returns a boolean. The elements supported are strings, integers and floats (only float64 will match as expected). In addition, it can also check if a substring exists in a string.
+
+e.g.
+
+ {{ if in .Params.tags "Git" }}Follow me on GitHub!{{ end }}
+
+or
+
+ {{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
+
+
+### intersect
+Given two arrays (or slices), this function will return the common elements in the arrays. The elements supported are strings, integers and floats (only float64).
+
+A useful example of this functionality is a 'similar posts' block. Create a list of links to posts where any of the tags in the current post match any tags in other posts.
+
+e.g.
+
+
+ {{ $page_link := .Permalink }}
+ {{ $tags := .Params.tags }}
+ {{ range .Site.Recent }}
+ {{ $page := . }}
+ {{ $has_common_tags := intersect $tags .Params.tags | len | lt 0 }}
+ {{ if and $has_common_tags (ne $page_link $page.Permalink) }}
+ - {{ $page.Title }}
+ {{ end }}
+ {{ end }}
+
+
+
+### isset
+Return true if the parameter is set.
+Takes either a slice, array or channel and an index or a map and a key as input.
+
+e.g. `{{ if isset .Params "project_url" }} {{ index .Params "project_url" }}{{ end }}`
+
+
+### sort
+Sorts maps, arrays and slices, returning a sorted slice. A sorted array of map values will be returned, with the keys eliminated. There are two optional arguments, which are `sortByField` and `sortAsc`. If left blank, sort will sort by keys (for maps) in ascending order.
+
+Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
+
+e.g.
+
+ // Front matter
+ +++
+ tags: [ "tag3", "tag1", "tag2" ]
+ +++
+
+ // Site config
+ +++
+ [params.authors]
+ [params.authors.Derek]
+ "firstName" = "Derek"
+ "lastName" = "Perkins"
+ [params.authors.Joe]
+ "firstName" = "Joe"
+ "lastName" = "Bergevin"
+ [params.authors.Tanner]
+ "firstName" = "Tanner"
+ "lastName" = "Linsley"
+ +++
+
+ // Use default sort options - sort by key / ascending
+ Tags: {{ range sort .Params.tags }}{{ . }} {{ end }}
+
+ // Outputs Tags: tag1 tag2 tag3
+
+ // Sort by value / descending
+ Tags: {{ range sort .Params.tags "value" "desc" }}{{ . }} {{ end }}
+
+ // Outputs Tags: tag3 tag2 tag1
+
+ // Use default sort options - sort by value / descending
+ Authors: {{ range sort .Site.Params.authors }}{{ .firstName }} {{ end }}
+
+ // Outputs Authors: Derek Joe Tanner
+
+ // Use default sort options - sort by value / descending
+ Authors: {{ range sort .Site.Params.authors "lastName" "desc" }}{{ .lastName }} {{ end }}
+
+ // Outputs Authors: Perkins Linsley Bergevin
+
+
### where
Filters an array to only elements containing a matching value for a given field.
@@ -104,105 +211,6 @@ Following operators are now available
{{ .Content }}
{{ end }}
-### delimit
-Loops through any array, slice or map and returns a string of all the values separated by the delimiter. There is an optional third parameter that lets you choose a different delimiter to go between the last two values.
-Maps will be sorted by the keys, and only a slice of the values will be returned, keeping a consistent output order.
-
-Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
-
-e.g.
-
- // Front matter
- +++
- tags: [ "tag1", "tag2", "tag3" ]
- +++
-
- // Used anywhere in a template
- Tags: {{ delimit .Params.tags ", " }}
-
- // Outputs Tags: tag1, tag2, tag3
-
- // Example with the optional "last" parameter
- Tags: {{ delimit .Params.tags ", " " and " }}
-
- // Outputs Tags: tag1, tag2 and tag3
-
-### sort
-Sorts maps, arrays and slices, returning a sorted slice. A sorted array of map values will be returned, with the keys eliminated. There are two optional arguments, which are `sortByField` and `sortAsc`. If left blank, sort will sort by keys (for maps) in ascending order.
-
-Works on [lists](/templates/list/), [taxonomies](/taxonomies/displaying/), [terms](/templates/terms/), [groups](/templates/list/)
-
-e.g.
-
- // Front matter
- +++
- tags: [ "tag3", "tag1", "tag2" ]
- +++
-
- // Site config
- +++
- [params.authors]
- [params.authors.Derek]
- "firstName" = "Derek"
- "lastName" = "Perkins"
- [params.authors.Joe]
- "firstName" = "Joe"
- "lastName" = "Bergevin"
- [params.authors.Tanner]
- "firstName" = "Tanner"
- "lastName" = "Linsley"
- +++
-
- // Use default sort options - sort by key / ascending
- Tags: {{ range sort .Params.tags }}{{ . }} {{ end }}
-
- // Outputs Tags: tag1 tag2 tag3
-
- // Sort by value / descending
- Tags: {{ range sort .Params.tags "value" "desc" }}{{ . }} {{ end }}
-
- // Outputs Tags: tag3 tag2 tag1
-
- // Use default sort options - sort by value / descending
- Authors: {{ range sort .Site.Params.authors }}{{ .firstName }} {{ end }}
-
- // Outputs Authors: Derek Joe Tanner
-
- // Use default sort options - sort by value / descending
- Authors: {{ range sort .Site.Params.authors "lastName" "desc" }}{{ .lastName }} {{ end }}
-
- // Outputs Authors: Perkins Linsley Bergevin
-
-### in
-Checks if an element is in an array (or slice) and returns a boolean. The elements supported are strings, integers and floats (only float64 will match as expected). In addition, it can also check if a substring exists in a string.
-
-e.g.
-
- {{ if in .Params.tags "Git" }}Follow me on GitHub!{{ end }}
-
-or
-
- {{ if in "this string contains a substring" "substring" }}Substring found!{{ end }}
-
-### intersect
-Given two arrays (or slices), this function will return the common elements in the arrays. The elements supported are strings, integers and floats (only float64).
-
-A useful example of this functionality is a 'similar posts' block. Create a list of links to posts where any of the tags in the current post match any tags in other posts.
-
-e.g.
-
-
- {{ $page_link := .Permalink }}
- {{ $tags := .Params.tags }}
- {{ range .Site.Recent }}
- {{ $page := . }}
- {{ $has_common_tags := intersect $tags .Params.tags | len | lt 0 }}
- {{ if and $has_common_tags (ne $page_link $page.Permalink) }}
- - {{ $page.Title }}
- {{ end }}
- {{ end }}
-
-
## Math
@@ -222,18 +230,6 @@ e.g.
{{add 1 2}} → 3 |
-
-sub |
-Subtracts two integers. |
-{{sub 3 2}} → 1 |
-
-
-
-mul |
-Multiplies two integers. |
-{{mul 2 3}} → 6 |
-
-
div |
Divides two integers. |
@@ -251,16 +247,65 @@ e.g.
Boolean of modulus of two integers. true if modulus is 0. |
{{modBool 15 3}} → true |
+
+
+mul |
+Multiplies two integers. |
+{{mul 2 3}} → 6 |
+
+
+
+sub |
+Subtracts two integers. |
+{{sub 3 2}} → 1 |
+
+
## Strings
-### urlize
-Takes a string and sanitizes it for usage in URLs, converts spaces to "-".
+### chomp
+Removes any trailing newline characters. Useful in a pipeline to remove newlines added by other processing (including `markdownify`).
+
+e.g., `{{chomp "Blockhead
\n"` → `"Blockhead
"`
+
+
+### dateFormat
+Converts the textual representation of the datetime into the other form or returns it of Go `time.Time` type value. These are formatted with the layout string.
+
+e.g. `{{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }}` →"Wednesday, Jan 21, 2015"
+
+
+### highlight
+Take a string of code and a language, uses Pygments to return the syntax highlighted code in HTML. Used in the [highlight shortcode](/extras/highlighting/).
+
+
+### lower
+Convert all characters in string to lowercase.
+
+e.g. `{{lower "BatMan"}}` → "batman"
+
+
+### markdownify
+
+This will run the string through the Markdown processesor. The result will be declared as "safe" so Go templates will not filter it.
+
+e.g. `{{ .Title | markdownify }}`
+
+
+### ref, relref
+Looks up a content page by relative path or logical name to return the permalink (`ref`) or relative permalink (`relref`). Requires a Node or Page object (usually satisfied with `.`). Used in the [`ref` and `relref` shortcodes]({{% ref "extras/crossreferences.md" %}}).
+
+e.g. {{ ref . "about.md" }}
+
+
+### replace
+Replace all occurences of the search string with the replacement string.
+
+e.g. `{{ replace "Batman and Robin" "Robin" "Catwoman" }}` → "Batman and Catwoman"
-e.g. `{{ . }}`
### safeHTML
Declares the provided string as a "safe" HTML document fragment
@@ -299,6 +344,7 @@ Example: Given a site-wide `config.toml` that contains this menu entry:
* `` ⇒ `` (Good!)
-->
+
### safeCSS
Declares the provided string as a known "safe" CSS string
so Go html/templates will not filter it.
@@ -317,6 +363,7 @@ Example: Given `style = "color: red;"` defined in the front matter of your `.md`
Note: "ZgotmplZ" is a special value that indicates that unsafe content reached a
CSS or URL context.
+
### safeURL
Declares the provided string as a "safe" URL or URL substring (see [RFC 3986][]).
A URL like `javascript:checkThatFormNotEditedBeforeLeavingPage()` from a trusted
@@ -355,54 +402,30 @@ To fix this, add ` | safeURL` after `.URL` on the 3rd line, like this:
With this change, we finally get `IRC: #golang at freenode`
as intended.
-### markdownify
-
-This will run the string through the Markdown processesor. The result will be declared as "safe" so Go templates will not filter it.
-
-e.g. `{{ .Title | markdownify }}`
-
-### lower
-Convert all characters in string to lowercase.
-
-e.g. `{{lower "BatMan"}}` → "batman"
-
-### upper
-Convert all characters in string to uppercase.
-
-e.g. `{{upper "BatMan"}}` → "BATMAN"
### title
Convert all characters in string to titlecase.
e.g. `{{title "BatMan"}}` → "Batman"
-### chomp
-Removes any trailing newline characters. Useful in a pipeline to remove newlines added by other processing (including `markdownify`).
-
-e.g., `{{chomp "Blockhead
\n"` → `"Blockhead
"`
### trim
Trim returns a slice of the string with all leading and trailing characters contained in cutset removed.
e.g. `{{ trim "++Batman--" "+-" }}` → "Batman"
-### replace
-Replace all occurences of the search string with the replacement string.
-e.g. `{{ replace "Batman and Robin" "Robin" "Catwoman" }}` → "Batman and Catwoman"
+### upper
+Convert all characters in string to uppercase.
-### dateFormat
-Converts the textual representation of the datetime into the other form or returns it of Go `time.Time` type value. These are formatted with the layout string.
+e.g. `{{upper "BatMan"}}` → "BATMAN"
-e.g. `{{ dateFormat "Monday, Jan 2, 2006" "2015-01-21" }}` →"Wednesday, Jan 21, 2015"
-### highlight
-Take a string of code and a language, uses Pygments to return the syntax highlighted code in HTML. Used in the [highlight shortcode](/extras/highlighting/).
+### urlize
+Takes a string and sanitizes it for usage in URLs, converts spaces to "-".
-### ref, relref
-Looks up a content page by relative path or logical name to return the permalink (`ref`) or relative permalink (`relref`). Requires a Node or Page object (usually satisfied with `.`). Used in the [`ref` and `relref` shortcodes]({{% ref "extras/crossreferences.md" %}}).
+e.g. `{{ . }}`
-e.g. {{ ref . "about.md" }}
## Advanced