shithub: hugo

Download patch

ref: d2ec1a06df8ab6b17ad05cb008d5701b40327d47
parent: 047c4188dfc854f658d16f1e4a9501f9c97a31c7
author: Bjørn Erik Pedersen <[email protected]>
date: Sat Apr 21 19:01:55 EDT 2018

Squashed 'docs/' changes from f9a5dc59b..76e881257

76e881257 Improve .Scratch entry (#454)
37ed09702 Remove zero-byte .gitmodules file altogether
943f21619 Add a note about valid values for taxonomies in front-matter
ebcfa30d7 Update definition list formatting
46050042a Corrected formatting
87c539101 Updated readFile documentation
8fd130395 commands: Regenerate the CLI docs
6ce0ce8d6 data: Regenereate the docshelper
9fe78fabd Release 0.39
33039c6ba releaser: Prepare repository for 0.40-DEV
e3a780907 releaser: Add release notes to /docs for release of 0.39
54406e3fa releaser: Bump versions for release of 0.39
21017660b Merge commit '047c4188dfc854f658d16f1e4a9501f9c97a31c7'

git-subtree-dir: docs
git-subtree-split: 76e88125760c140541edab2061aed31c6db2d800

--- a/config.toml
+++ b/config.toml
@@ -70,7 +70,7 @@
 [params]
   description = "The world’s fastest framework for building websites"
   ## Used for views in rendered HTML (i.e., rather than using the .Hugo variable)
-  release = "0.38.1"
+  release = "0.39"
   ## Setting this to true will add a "noindex" to *EVERY* page on the site
   removefromexternalsearch = false
   ## Gh repo for site footer (include trailing slash)
--- a/content/commands/hugo.md
+++ b/content/commands/hugo.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo"
 slug: hugo
 url: /commands/hugo/
@@ -77,4 +77,4 @@
 * [hugo server](/commands/hugo_server/)	 - A high performance webserver
 * [hugo version](/commands/hugo_version/)	 - Print the version number of Hugo
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_benchmark.md
+++ b/content/commands/hugo_benchmark.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo benchmark"
 slug: hugo_benchmark
 url: /commands/hugo_benchmark/
@@ -70,4 +70,4 @@
 
 * [hugo](/commands/hugo/)	 - hugo builds your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_check.md
+++ b/content/commands/hugo_check.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo check"
 slug: hugo_check
 url: /commands/hugo_check/
@@ -35,4 +35,4 @@
 * [hugo](/commands/hugo/)	 - hugo builds your site
 * [hugo check ulimit](/commands/hugo_check_ulimit/)	 - Check system ulimit settings
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_check_ulimit.md
+++ b/content/commands/hugo_check_ulimit.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo check ulimit"
 slug: hugo_check_ulimit
 url: /commands/hugo_check_ulimit/
@@ -39,4 +39,4 @@
 
 * [hugo check](/commands/hugo_check/)	 - Contains some verification checks
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_config.md
+++ b/content/commands/hugo_config.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo config"
 slug: hugo_config
 url: /commands/hugo_config/
@@ -19,7 +19,8 @@
 ### Options
 
 ```
-  -h, --help   help for config
+  -h, --help            help for config
+  -s, --source string   filesystem path to read files relative from
 ```
 
 ### Options inherited from parent commands
@@ -38,4 +39,4 @@
 
 * [hugo](/commands/hugo/)	 - hugo builds your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_convert.md
+++ b/content/commands/hugo_convert.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo convert"
 slug: hugo_convert
 url: /commands/hugo_convert/
@@ -42,4 +42,4 @@
 * [hugo convert toTOML](/commands/hugo_convert_totoml/)	 - Convert front matter to TOML
 * [hugo convert toYAML](/commands/hugo_convert_toyaml/)	 - Convert front matter to YAML
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_convert_toJSON.md
+++ b/content/commands/hugo_convert_toJSON.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo convert toJSON"
 slug: hugo_convert_toJSON
 url: /commands/hugo_convert_tojson/
@@ -42,4 +42,4 @@
 
 * [hugo convert](/commands/hugo_convert/)	 - Convert your content to different formats
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_convert_toTOML.md
+++ b/content/commands/hugo_convert_toTOML.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo convert toTOML"
 slug: hugo_convert_toTOML
 url: /commands/hugo_convert_totoml/
@@ -42,4 +42,4 @@
 
 * [hugo convert](/commands/hugo_convert/)	 - Convert your content to different formats
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_convert_toYAML.md
+++ b/content/commands/hugo_convert_toYAML.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo convert toYAML"
 slug: hugo_convert_toYAML
 url: /commands/hugo_convert_toyaml/
@@ -42,4 +42,4 @@
 
 * [hugo convert](/commands/hugo_convert/)	 - Convert your content to different formats
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_env.md
+++ b/content/commands/hugo_env.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo env"
 slug: hugo_env
 url: /commands/hugo_env/
@@ -38,4 +38,4 @@
 
 * [hugo](/commands/hugo/)	 - hugo builds your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_gen.md
+++ b/content/commands/hugo_gen.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo gen"
 slug: hugo_gen
 url: /commands/hugo_gen/
@@ -38,4 +38,4 @@
 * [hugo gen doc](/commands/hugo_gen_doc/)	 - Generate Markdown documentation for the Hugo CLI.
 * [hugo gen man](/commands/hugo_gen_man/)	 - Generate man pages for the Hugo CLI
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_gen_autocomplete.md
+++ b/content/commands/hugo_gen_autocomplete.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo gen autocomplete"
 slug: hugo_gen_autocomplete
 url: /commands/hugo_gen_autocomplete/
@@ -56,4 +56,4 @@
 
 * [hugo gen](/commands/hugo_gen/)	 - A collection of several useful generators.
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_gen_chromastyles.md
+++ b/content/commands/hugo_gen_chromastyles.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo gen chromastyles"
 slug: hugo_gen_chromastyles
 url: /commands/hugo_gen_chromastyles/
@@ -43,4 +43,4 @@
 
 * [hugo gen](/commands/hugo_gen/)	 - A collection of several useful generators.
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_gen_doc.md
+++ b/content/commands/hugo_gen_doc.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo gen doc"
 slug: hugo_gen_doc
 url: /commands/hugo_gen_doc/
@@ -45,4 +45,4 @@
 
 * [hugo gen](/commands/hugo_gen/)	 - A collection of several useful generators.
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_gen_man.md
+++ b/content/commands/hugo_gen_man.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo gen man"
 slug: hugo_gen_man
 url: /commands/hugo_gen_man/
@@ -41,4 +41,4 @@
 
 * [hugo gen](/commands/hugo_gen/)	 - A collection of several useful generators.
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_import.md
+++ b/content/commands/hugo_import.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo import"
 slug: hugo_import
 url: /commands/hugo_import/
@@ -37,4 +37,4 @@
 * [hugo](/commands/hugo/)	 - hugo builds your site
 * [hugo import jekyll](/commands/hugo_import_jekyll/)	 - hugo import from Jekyll
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_import_jekyll.md
+++ b/content/commands/hugo_import_jekyll.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo import jekyll"
 slug: hugo_import_jekyll
 url: /commands/hugo_import_jekyll/
@@ -41,4 +41,4 @@
 
 * [hugo import](/commands/hugo_import/)	 - Import your site from others.
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_list.md
+++ b/content/commands/hugo_list.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo list"
 slug: hugo_list
 url: /commands/hugo_list/
@@ -40,4 +40,4 @@
 * [hugo list expired](/commands/hugo_list_expired/)	 - List all posts already expired
 * [hugo list future](/commands/hugo_list_future/)	 - List all posts dated in the future
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_list_drafts.md
+++ b/content/commands/hugo_list_drafts.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo list drafts"
 slug: hugo_list_drafts
 url: /commands/hugo_list_drafts/
@@ -39,4 +39,4 @@
 
 * [hugo list](/commands/hugo_list/)	 - Listing out various types of content
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_list_expired.md
+++ b/content/commands/hugo_list_expired.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo list expired"
 slug: hugo_list_expired
 url: /commands/hugo_list_expired/
@@ -40,4 +40,4 @@
 
 * [hugo list](/commands/hugo_list/)	 - Listing out various types of content
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_list_future.md
+++ b/content/commands/hugo_list_future.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo list future"
 slug: hugo_list_future
 url: /commands/hugo_list_future/
@@ -40,4 +40,4 @@
 
 * [hugo list](/commands/hugo_list/)	 - Listing out various types of content
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_new.md
+++ b/content/commands/hugo_new.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo new"
 slug: hugo_new
 url: /commands/hugo_new/
@@ -48,4 +48,4 @@
 * [hugo new site](/commands/hugo_new_site/)	 - Create a new site (skeleton)
 * [hugo new theme](/commands/hugo_new_theme/)	 - Create a new theme
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_new_site.md
+++ b/content/commands/hugo_new_site.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo new site"
 slug: hugo_new_site
 url: /commands/hugo_new_site/
@@ -43,4 +43,4 @@
 
 * [hugo new](/commands/hugo_new/)	 - Create new content for your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_new_theme.md
+++ b/content/commands/hugo_new_theme.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo new theme"
 slug: hugo_new_theme
 url: /commands/hugo_new_theme/
@@ -42,4 +42,4 @@
 
 * [hugo new](/commands/hugo_new/)	 - Create new content for your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_server.md
+++ b/content/commands/hugo_server.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo server"
 slug: hugo_server
 url: /commands/hugo_server/
@@ -88,4 +88,4 @@
 
 * [hugo](/commands/hugo/)	 - hugo builds your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/commands/hugo_version.md
+++ b/content/commands/hugo_version.md
@@ -1,5 +1,5 @@
 ---
-date: 2018-01-31T11:40:21+01:00
+date: 2018-04-16
 title: "hugo version"
 slug: hugo_version
 url: /commands/hugo_version/
@@ -38,4 +38,4 @@
 
 * [hugo](/commands/hugo/)	 - hugo builds your site
 
-###### Auto generated by spf13/cobra on 31-Jan-2018
+###### Auto generated by spf13/cobra on 16-Apr-2018
--- a/content/content-management/front-matter.md
+++ b/content/content-management/front-matter.md
@@ -56,70 +56,70 @@
 
 There are a few predefined variables that Hugo is aware of. See [Page Variables][pagevars] for how to call many of these predefined variables in your templates.
 
-`aliases`
+aliases
 : an array of one or more aliases (e.g., old published paths of renamed content) that will be created in the output directory structure . See [Aliases][aliases] for details.
 
-`date`
+date
 : the datetime at which the content was created; note this value is auto-populated according to Hugo's built-in [archetype][].
 
-`description`
+description
 : the description for the content.
 
-`draft`
+draft
 : if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command.
 
-`expiryDate`
+expiryDate
 : the datetime at which the content should no longer be published by Hugo; expired content will not be rendered unless the `--buildExpired` flag is passed to the `hugo` command.
 
-`headless`
+headless
 : if `true`, sets a leaf bundle to be [headless][headless-bundle].
 
-`isCJKLanguage`
+isCJKLanguage
 : if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages.
 
-`keywords`
+keywords
 : the meta keywords for the content.
 
-`layout`
+layout
 : the layout Hugo should select from the [lookup order][lookup] when rendering the content. If a `type` is not specified in the front matter, Hugo will look for the layout of the same name in the layout directory that corresponds with a content's section. See ["Defining a Content Type"][definetype]
 
-`lastmod`
+lastmod
 : the datetime at which the content was last modified.
 
-`linkTitle`
+linkTitle
 : used for creating links to content; if set, Hugo defaults to using the `linktitle` before the `title`. Hugo can also [order lists of content by `linktitle`][bylinktitle].
 
-`markup`
+markup
 : **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
 
-`outputs`
+outputs
 : allows you to specify output formats specific to the content. See [output formats][outputs].
 
-`publishDate`
+publishDate
 : if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`.
 
-`resources`
+resources
 : used for configuring page bundle resources. See [Page Resources][page-resources].
 
-`slug`
+slug
 : appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.
 
-`taxonomies`
-: these will use the field name of the plural form of the index; see the `tags` and `categories` in the above front matter examples.
-
-`title`
+title
 : the title for the content.
 
-`type`
+type
 : the type of the content; this value will be automatically derived from the directory (i.e., the [section][]) if not specified in front matter.
 
-`url`
+url
 : the full path to the content from the web root. It makes no assumptions about the path of the content file. It also ignores any language prefixes of
 the multilingual feature.
 
-`weight`
+weight
 : used for [ordering your content in lists][ordering].
 
+\<taxonomies\>
+: field name of the *plural* form of the index. See `tags` and `categories` in the above front matter examples. _Note that the plural form of user-defined taxonomies cannot be the same as any of the predefined front matter variables._
+
 {{% note "Hugo's Default URL Destinations" %}}
 If neither `slug` nor `url` is present and [permalinks are not configured otherwise in your site `config` file](/content-management/urls/#permalinks), Hugo will use the filename of your content to create the output URL. See [Content Organization](/content-management/organization) for an explanation of paths in Hugo and [URL Management](/content-management/urls/) for ways to customize Hugo's default behaviors.
 {{% /note %}}
@@ -130,10 +130,10 @@
 
 The following fields can be accessed via `.Params.include_toc` and `.Params.show_comments`, respectively. The [Variables][] section provides more information on using Hugo's page- and site-level variables in your templates.
 
-```
+{{< code-toggle copy="false" >}}
 include_toc: true
 show_comments: false
-```
+{{</ code-toggle >}}
 
 
 ## Order Content Through Front Matter
--- a/content/functions/readfile.md
+++ b/content/functions/readfile.md
@@ -18,7 +18,7 @@
 aliases: []
 ---
 
-Note that the filename must be relative to the current project working directory.
+Note that the filename must be relative to the current project working directory, or the project's `/content` folder. 
 
 So, if you have a file with the name `README.txt` in the root of your project with the content `Hugo Rocks!`:
 
@@ -25,6 +25,8 @@
 ```
 {{readFile "README.txt"}} → "Hugo Rocks!"
 ```
+
+If you receive a "file doesn't exist" error with a path listed, do take note that the path is the last one checked by the function, and may not accurately reflect your target. You should generally double-check your path for mistakes.
 
 For more information on using `readDir` and `readFile` in your templates, see [Local File Templates][local].
 
--- a/content/functions/scratch.md
+++ b/content/functions/scratch.md
@@ -20,66 +20,94 @@
 aliases: [/extras/scratch/,/doc/scratch/]
 ---
 
-In most cases you can do well without `Scratch`, but there are some use cases that aren't solvable with Go's templates without `Scratch`'s help, due to scoping issues.
+In most cases you can do okay without `Scratch`, but due to scoping issues, there are many use cases that aren't solvable in Go Templates without `Scratch`'s help.
 
 {{% note %}}
 See [this Go issue](https://github.com/golang/go/issues/10608) for the main motivation behind Scratch.
 {{% /note %}}
 
+{{% note %}}
+For a detailed analysis of `.Scratch` and in context use cases, see this [post](https://regisphilibert.com/blog/2017/04/hugo-scratch-explained-variable/).
+{{% /note %}}
+
+## Methods
+
 `Scratch` is added to both `Page` and `Shortcode` -- with following methods:
 
-* `Set` and `Add` takes a `key` and the `value` to add.
-* `Get` returns the `value` for the `key` given.
-* `SetInMap` takes a `key`, `mapKey` and `value`
-* `GetSortedMapValues` returns array of values from `key` sorted by `mapKey`
-* `Delete` takes a `key` to remove
+#### .Set
+Set the given value to a given key
 
-`Set` and `SetInMap` can store values of any type.
+```go-html-template
+{{ .Scratch.Set "greeting" "Hello" }}
+```
+#### .Get
+Get the value of a 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.
+```go-html-template
+{{ .Scratch.Set "greeting" "Hello" }}
+----
+{{ .Scratch.Get "greeting" }} > Hello
+```
 
-The scope of the backing data is global for the given `Page` or `Shortcode`, and spans partial and shortcode includes.
+#### .Add
+Will add a given value to existing value of the given key. 
 
-Note that `.Scratch` from a shortcode will return the shortcode's `Scratch`, which in most cases is what you want. If you want to store it in the page scroped Scratch, then use `.Page.Scratch`.
+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.
 
-## Sample usage
+```go-html-template
+{{ .Scratch.Add "greetings" "Hello" }}
+{{ .Scratch.Add "greetings" "Welcome" }}
+----
+{{ .Scratch.Get "greetings" }} > HelloWelcome
+```
 
-The usage is best illustrated with some samples:
+```go-html-template
+{{ .Scratch.Add "total" 3 }}
+{{ .Scratch.Add "total" 7 }}
+----
+{{ .Scratch.Get "total" }} > 10
+```
 
+
+```go-html-template
+{{ .Scratch.Add "greetings" (slice "Hello") }}
+{{ .Scratch.Add "greetings" (slice "Welcome" "Cheers") }}
+----
+{{ .Scratch.Get "greetings" }} > []interface {}{"Hello", "Welcome", "Cheers"}
 ```
-{{ $.Scratch.Add "a1" 12 }}
-{{ $.Scratch.Get "a1" }} {{/* => 12 */}}
-{{ $.Scratch.Add "a1" 1 }}
-{{ $.Scratch.Get "a1" }} // {{/* => 13 */}}
 
-{{ $.Scratch.Add "a2" "AB" }}
-{{ $.Scratch.Get "a2" }} {{/* => AB */}}
-{{ $.Scratch.Add "a2" "CD" }}
-{{ $.Scratch.Get "a2" }} {{/* => ABCD */}}
+#### .SetInMap
+Takes a `key`, `mapKey` and `value` and add a map of `mapKey` and `value` to the given `key`.
 
-{{ $.Scratch.Add "l1" (slice "A" "B") }}
-{{ $.Scratch.Get "l1" }} {{/* => [A B]  */}}
-{{ $.Scratch.Add "l1" (slice "C" "D") }}
-{{ $.Scratch.Get "l1" }} {{/* => [A B C D] */}}
+```go-html-template
+{{ .Scratch.SetInMap "greetings" "english" "Hello" }}
+{{ .Scratch.SetInMap "greetings" "french" "Bonjour" }}
+----
+{{ .Scratch.Get "greetings" }} > map[french:Bonjour english:Hello]
+```
 
-{{ $.Scratch.Set "v1" 123 }}
-{{ $.Scratch.Get "v1" }}  {{/* => 123 */}}
+#### .GetSortedMapValues
+Returns array of values from `key` sorted by `mapKey`
 
-{{ $.Scratch.SetInMap "a3" "b" "XX" }}
-{{ $.Scratch.SetInMap "a3" "a" "AA" }}
-{{ $.Scratch.SetInMap "a3" "c" "CC" }}
-{{ $.Scratch.SetInMap "a3" "b" "BB" }}
-{{ $.Scratch.GetSortedMapValues "a3" }} {{/* => []interface {}{"AA", "BB", "CC"} */}}
+```go-html-template
+{{ .Scratch.SetInMap "greetings" "english" "Hello" }}
+{{ .Scratch.SetInMap "greetings" "french" "Bonjour" }}
+----
+{{ .Scratch.GetSortedMapValues "greetings" }} > [Hello Bonjour]
+```
+#### .Delete
+Removes the given key
 
-{{ $.Scratch.Add "a" 1 }}
-{{ $.Scratch.Delete "a" }}
-{{ $.Scratch.Add "a" 2 }}
-{{ $.Scratch.Get "a" }} {{/* => 2 */}}
+```go-html-template
+{{ .Scratch.Delete "greetings" }}
 ```
 
-{{% note %}}
-The examples above uses the special `$` variable, which refers to the top-level node. This is the behavior you most likely want, and will help remove some confusion when using `Scratch` inside page range loops -- and you start inadvertently calling the wrong `Scratch`. But there may be use cases for `{{ .Scratch.Add "key" "some value" }}`.
-{{% /note %}}
+## Scope
+The scope of the backing data is global for the given `Page` or `Shortcode`, and spans partial and shortcode includes.
+
+Note that `.Scratch` from a shortcode will return the shortcode's `Scratch`, which in most cases is what you want. If you want to store it in the page scoped Scratch, then use `.Page.Scratch`.
+
+
 
 
 [pagevars]: /variables/page/
--- a/content/getting-started/configuration.md
+++ b/content/getting-started/configuration.md
@@ -346,7 +346,7 @@
 
 
 `:filename`
-: Fetches the date from the content file's filename. For example, `218-02-22-mypage.md` will extract the date `218-02-22`. Also, if `slug is not set, `mypage` will be used as the value for `.Slug`.
+: Fetches the date from the content file's filename. For example, `218-02-22-mypage.md` will extract the date `218-02-22`. Also, if `slug` is not set, `mypage` will be used as the value for `.Slug`.
 
 An example:
 
--- a/content/news/0.38.2-relnotes/index.md
+++ b/content/news/0.38.2-relnotes/index.md
@@ -9,6 +9,7 @@
 
 ---
 
+	
 
 This is a bug-fix release with a couple of important fixes:
 
binary files /dev/null b/content/news/0.39-relnotes/featured-hugo-39-poster.png differ
--- /dev/null
+++ b/content/news/0.39-relnotes/index.md
@@ -1,0 +1,87 @@
+
+---
+date: 2018-04-16
+title: "The Nat King Cole Stabilizer Edition"
+description: "Hugo 0.39: Rewrite of the /commands package, `Resource.Content`, several new template funcs, and more …"
+categories: ["Releases"]
+---
+
+	
+**Nat King Cole** was a fantastic American jazz pianist. When his bass player had visited the bar a little too often, he started with his percussive	piano playing to keep the tempo flowing. Oscar Peterson called it _"Nat's stabilizers"_. This release is the software equivalent of that. We have been doing frequent main releases this year, but looking back, the patch releases that followed them seemed unneeded. And looking at the regressions, most of them stem from the `commands` package, a package that before this release was filled with globals and high coupling. This package is now rewritten and accompanied with decent test coverage.
+
+But this release isn't all boring and technical: It includes several important bug fixes, several useful new template functions, and `Resource.Content` allows you to get any resource's content without having to fiddle with file paths and `readFile`.
+
+This release represents **61 contributions by 4 contributors** to the main Hugo code base. A shout-out to [@bep](https://github.com/bep) for the implementation and [@it-gro](https://github.com/it-gro) and [@RickCogley](https://github.com/RickCogley) for the help testing it.
+
+[@bep](https://github.com/bep) leads the Hugo development with a significant amount of contributions and his witty Norwegian humour, but also a big shoutout to [@anthonyfok](https://github.com/anthonyfok), [@thedodobird2](https://github.com/thedodobird2), and [@neurocline](https://github.com/neurocline) for their ongoing contributions.
+And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) for his relentless work on keeping the themes site in pristine condition and to [@kaushalmodi](https://github.com/kaushalmodi) for his great work on the documentation site.
+
+Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), 
+which has received **6 contributions by 5 contributors**. A special thanks to [@kaushalmodi](https://github.com/kaushalmodi), [@regisphilibert](https://github.com/regisphilibert), [@bep](https://github.com/bep), and [@tomanistor](https://github.com/tomanistor) for their work on the documentation site.
+
+Hugo now has:
+
+* 24911+ [stars](https://github.com/gohugoio/hugo/stargazers)
+* 446+ [contributors](https://github.com/gohugoio/hugo/graphs/contributors)
+* 218+ [themes](http://themes.gohugo.io/)
+
+## Notes
+
+* The `main.Execute` function now returns a `Response` object and the global `Hugo` variable is removed. This is only relevant for people building some kind of API around Hugo.
+* Remove deprecated `File.Bytes` [94c8b29c](https://github.com/gohugoio/hugo/commit/94c8b29c39d0c485ee91d98c08fd615c28802496) [@bep](https://github.com/bep) 
+
+## Enhancements
+
+### Templates
+
+* Add `anchorize` template func [4dba6ce1](https://github.com/gohugoio/hugo/commit/4dba6ce15ae9b5208b1e2d68c96d7b1dce0a07ab) [@bep](https://github.com/bep) 
+* Add `path.Join` [880ca19f](https://github.com/gohugoio/hugo/commit/880ca19f209e68e6a8daa6686b361515ecacc91e) [@bep](https://github.com/bep) 
+* Add `path.Split` template func [01b72eb5](https://github.com/gohugoio/hugo/commit/01b72eb592d0e0aefc5f7ae42f9f6ff112883bb6) [@bep](https://github.com/bep) 
+
+### Other
+
+* Implement `Resource.Content` [0e7716a4](https://github.com/gohugoio/hugo/commit/0e7716a42450401c7998aa81ad2ed98c8ab109e8) [@bep](https://github.com/bep) [#4622](https://github.com/gohugoio/hugo/issues/4622)
+* Make `Page.Content` a method that returns interface{} [417c5e2b](https://github.com/gohugoio/hugo/commit/417c5e2b67b97fa80a0b6f77d259966f03b95344) [@bep](https://github.com/bep) [#4622](https://github.com/gohugoio/hugo/issues/4622)
+* Remove accidental and breaking space in baseURL flag [1b4e0c41](https://github.com/gohugoio/hugo/commit/1b4e0c4161fb631add62e77f494a7e62c3619020) [@bep](https://github.com/bep) [#4607](https://github.com/gohugoio/hugo/issues/4607)
+* Properly handle CLI slice arguments [27a524b0](https://github.com/gohugoio/hugo/commit/27a524b0905ec73c1eef233f94700feb9f465011) [@bep](https://github.com/bep) [#4607](https://github.com/gohugoio/hugo/issues/4607)
+* Correctly handle destination and i18n-warnings [bede93de](https://github.com/gohugoio/hugo/commit/bede93de005dcf934f3ec9be6388310ac6c57acd) [@bep](https://github.com/bep) [#4607](https://github.com/gohugoio/hugo/issues/4607)
+* Allow "*/" inside commented out shortcodes [14c35c8a](https://github.com/gohugoio/hugo/commit/14c35c8a56c4dc9a1ee0053e9ff976be7715ba99) [@bep](https://github.com/bep) [#4608](https://github.com/gohugoio/hugo/issues/4608)
+* Make commands.Execute return a Response object [96689a5c](https://github.com/gohugoio/hugo/commit/96689a5c319f720368491226f034d0ff9585217c) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Remove some TODOs [e7010c1b](https://github.com/gohugoio/hugo/commit/e7010c1b621d68ee53411a5ba8143d07b976d9fe) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Add basic server test [a7d00fc3](https://github.com/gohugoio/hugo/commit/a7d00fc39e87a5cac99b3a2380f5cc8c135d2b4b) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Remove the Hugo global [b110d0ae](https://github.com/gohugoio/hugo/commit/b110d0ae04e13fb45c739bcebb580709745082e6) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the limit command work again [73825cfc](https://github.com/gohugoio/hugo/commit/73825cfc1c0b007830b24bb1947a565175b52d36) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Move the commands related logic to its own file [a8f7fbbb](https://github.com/gohugoio/hugo/commit/a8f7fbbb10aa78f3ebac008d29d9969bb197393c) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Add CLI tests [e8d6ca95](https://github.com/gohugoio/hugo/commit/e8d6ca9531d19e4e898c57d77d2fd627ea38ade0) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the hugo command non-global [4d32f2fa](https://github.com/gohugoio/hugo/commit/4d32f2fa8969f368b088dc9bcedb45f2c986cb27) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Extract some common types into its own file [018602c4](https://github.com/gohugoio/hugo/commit/018602c46db8d729af2871bd5f4c1e7480420f09) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the server command non-global [2f0d98a1](https://github.com/gohugoio/hugo/commit/2f0d98a19b021d03930003217b0519afaef3a391) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the gen commands non-global [e0621d20](https://github.com/gohugoio/hugo/commit/e0621d207ce3278a82f8a60607e9cdd304149029) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the list commands non-global [e26a8b24](https://github.com/gohugoio/hugo/commit/e26a8b242a6434117d089a0799238add7025dbf4) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the import commands non-global [2a2c9838](https://github.com/gohugoio/hugo/commit/2a2c9838671b5401331d20f8c72e2b934fe34e8d) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the config command non-global [15b1e269](https://github.com/gohugoio/hugo/commit/15b1e269ade91ddc6a74c552bc61b0c5e527d268) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make the new commands non-global [56a13080](https://github.com/gohugoio/hugo/commit/56a13080446283ed1cde6b69fc6f4fac85076c84) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make convert command non-global [4b780ca7](https://github.com/gohugoio/hugo/commit/4b780ca778ee7f25af808da38ede964a01698c70) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make more commands non-global [7bc5e89f](https://github.com/gohugoio/hugo/commit/7bc5e89fbaa5c613b8853ff7b69fae570bd0b56d) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Make benchmark non-global [fdf1d94e](https://github.com/gohugoio/hugo/commit/fdf1d94ebc7d1aa4855c62237f2edbd4bdade1a7) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Start of flag cleaning [1157fef8](https://github.com/gohugoio/hugo/commit/1157fef85908ea54883fe0dba6adc4861ba02162) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Use short date format in CLI docs [e614d8a5](https://github.com/gohugoio/hugo/commit/e614d8a57c2ff5eef9270d51fcc6518398d7ff88) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Update README.md [fca49d6c](https://github.com/gohugoio/hugo/commit/fca49d6c608d227049cb2f26895cfecc685f1c89) [@thedodobird2](https://github.com/thedodobird2) 
+* Sync dependencies [0e8b3cbc](https://github.com/gohugoio/hugo/commit/0e8b3cbcd274e1f2e14be694c794a544f49efb56) [@bep](https://github.com/bep) 
+* Bump Go versions [230f2b8c](https://github.com/gohugoio/hugo/commit/230f2b8c4fce03f14847de2b22402e64d4d69783) [@bep](https://github.com/bep) [#4545](https://github.com/gohugoio/hugo/issues/4545)
+* Add bash completion [874159b5](https://github.com/gohugoio/hugo/commit/874159b5436bc9080aec71a9c26d35f8f62c9fd0) [@anthonyfok](https://github.com/anthonyfok) 
+* Handle mass content etc. edits in server mode [730b66b6](https://github.com/gohugoio/hugo/commit/730b66b6520f263af16f555d1d7be51205a8e51d) [@bep](https://github.com/bep) [#4563](https://github.com/gohugoio/hugo/issues/4563)
+
+## Fixes
+
+* Fix `livereload` of bundled pages [f3775877](https://github.com/gohugoio/hugo/commit/f3775877c61c11ab7c8fd1fc3e15470bf5da4820) [@bep](https://github.com/bep) [#4607](https://github.com/gohugoio/hugo/issues/4607)
+* Do not reset `.Page.Scratch` on rebuilds [61d52f14](https://github.com/gohugoio/hugo/commit/61d52f146297950e283ae086d8b1af61099d22a0) [@bep](https://github.com/bep) [#4627](https://github.com/gohugoio/hugo/issues/4627)
+* Fix failing Travis server test [9c782d51](https://github.com/gohugoio/hugo/commit/9c782d5147bfea0dd85cf3374f598f0176f204eb) [@bep](https://github.com/bep) 
+* Fix the config command [f396cffa](https://github.com/gohugoio/hugo/commit/f396cffa239e948075af2224208671956d8b4a84) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Fix some flag diff [24d5c219](https://github.com/gohugoio/hugo/commit/24d5c219424a9777bb1dd366b43e68e6f47e1adb) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Fix TestFixURL [1e233b1c](https://github.com/gohugoio/hugo/commit/1e233b1c4598fd8cbce7da8a67bf2c4918c6047e) [@bep](https://github.com/bep) [#4598](https://github.com/gohugoio/hugo/issues/4598)
+* Disable shallow clone to fix TestPageWithLastmodFromGitInfo [094ec171](https://github.com/gohugoio/hugo/commit/094ec171420e659cdf962a19dd90105912ce9901) [@anthonyfok](https://github.com/anthonyfok) [#4584](https://github.com/gohugoio/hugo/issues/4584)
+* Fix livereload for the home page bundle [f87239e4](https://github.com/gohugoio/hugo/commit/f87239e4cab958bf59ecfb1beb8cac439441a553) [@bep](https://github.com/bep) [#4576](https://github.com/gohugoio/hugo/issues/4576)
+* Fix empty `BuildDate` in "hugo version" [294c0f80](https://github.com/gohugoio/hugo/commit/294c0f8001fe598278c1eb8015deb6b98e8de686) [@anthonyfok](https://github.com/anthonyfok) 
+* Fix some livereload content regressions [a4deaeff](https://github.com/gohugoio/hugo/commit/a4deaeff0cfd70abfbefa6d40c0b86839a216f6d) [@bep](https://github.com/bep) [#4566](https://github.com/gohugoio/hugo/issues/4566)
+* Fix two tests that are broken on Windows [26f34fd5](https://github.com/gohugoio/hugo/commit/26f34fd59da1ce1885d4f2909c5d9ef9c1726944) [@neurocline](https://github.com/neurocline) 
--- a/data/docs.json
+++ b/data/docs.json
@@ -84,6 +84,7 @@
       {
         "Name": "Base Makefile",
         "Aliases": [
+          "*",
           "bsdmake",
           "mak",
           "make",
@@ -96,6 +97,7 @@
         "Name": "Bash",
         "Aliases": [
           "bash",
+          "bash_*",
           "bashrc",
           "ebuild",
           "eclass",
@@ -2975,6 +2977,42 @@
           "Examples": []
         }
       },
+      "path": {
+        "Join": {
+          "Description": "Join joins any number of path elements into a single path, adding a\nseparating slash if necessary. All the input\npath elements are passed into filepath.ToSlash converting any Windows slashes\nto forward slashes.\nThe result is Cleaned; in particular,\nall empty strings are ignored.",
+          "Args": [
+            "elements"
+          ],
+          "Aliases": null,
+          "Examples": [
+            [
+              "{{ slice \"my/path\" \"filename.txt\" | path.Join  }}",
+              "my/path/filename.txt"
+            ],
+            [
+              "{{  path.Join \"my\" \"path\" \"filename.txt\" }}",
+              "my/path/filename.txt"
+            ]
+          ]
+        },
+        "Split": {
+          "Description": "Split splits path immediately following the final slash,\nseparating it into a directory and file name component.\nIf there is no slash in path, Split returns an empty dir and\nfile set to path.\nThe input path is passed into filepath.ToSlash converting any Windows slashes\nto forward slashes.\nThe returned values have the property that path = dir+file.",
+          "Args": [
+            "path"
+          ],
+          "Aliases": null,
+          "Examples": [
+            [
+              "{{ \"/my/path/filename.txt\" | path.Split }}",
+              "/my/path/|filename.txt"
+            ],
+            [
+              "{{ \"/my/path/filename.txt\" | path.Split }}",
+              "/my/path/|filename.txt"
+            ]
+          ]
+        }
+      },
       "safe": {
         "CSS": {
           "Description": "CSS returns a given string as html/template CSS content.",
@@ -3604,6 +3642,21 @@
             "absURL"
           ],
           "Examples": []
+        },
+        "Anchorize": {
+          "Description": "Anchorize creates sanitized anchor names that are compatible with Blackfriday.",
+          "Args": [
+            "a"
+          ],
+          "Aliases": [
+            "anchorize"
+          ],
+          "Examples": [
+            [
+              "{{ \"This is a title\" | anchorize }}",
+              "this-is-a-title"
+            ]
+          ]
         },
         "Parse": {
           "Description": "",
--- a/netlify.toml
+++ b/netlify.toml
@@ -3,7 +3,7 @@
 command = "hugo"
 
 [context.production.environment]
-HUGO_VERSION = "0.38.2"
+HUGO_VERSION = "0.39"
 HUGO_ENV = "production"
 HUGO_ENABLEGITINFO = "true"
 
@@ -11,7 +11,7 @@
 command = "hugo --enableGitInfo"
 
 [context.split1.environment]
-HUGO_VERSION = "0.38.2"
+HUGO_VERSION = "0.39"
 HUGO_ENV = "production"
 
 [context.deploy-preview]
@@ -18,13 +18,13 @@
 command = "hugo -b $DEPLOY_PRIME_URL"
 
 [context.deploy-preview.environment]
-HUGO_VERSION = "0.38.2"
+HUGO_VERSION = "0.39"
 
 [context.branch-deploy]
 command = "hugo -b $DEPLOY_PRIME_URL"
 
 [context.branch-deploy.environment]
-HUGO_VERSION = "0.38.2"
+HUGO_VERSION = "0.39"
 
 [context.next.environment]
 HUGO_ENABLEGITINFO = "true"
binary files /dev/null b/resources/_gen/images/news/0.39-relnotes/featured-hugo-39-poster_hu2a1fdf8d3d53aa00bce401a32585d7ec_216872_640x0_resize_catmullrom_2.png differ
binary files /dev/null b/resources/_gen/images/news/0.39-relnotes/featured-hugo-39-poster_hu3261e6e65defb4edf9f0fce20bf5f60d_217215_480x0_resize_catmullrom_2.png differ
binary files /dev/null b/resources/_gen/images/news/0.39-relnotes/featured-hugo-39-poster_hu3261e6e65defb4edf9f0fce20bf5f60d_217215_640x0_resize_catmullrom_2.png differ