From: Bjørn Erik Pedersen Date: Sun, 31 Oct 2021 12:53:55 +0000 (+0100) Subject: Merge commit 'aa5ac36a3eb68b86c803caec703869efefc8447e' X-Git-Tag: v0.89.0~10 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=4b36498a852edc4e4c269ba50855bad7bea0c4bb;p=brevno-suite%2Fhugo Merge commit 'aa5ac36a3eb68b86c803caec703869efefc8447e' --- 4b36498a852edc4e4c269ba50855bad7bea0c4bb diff --cc docs/.gitignore index 6f4431f4,00000000..bad85a18 mode 100644,000000..100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@@ -1,6 -1,0 +1,7 @@@ +/.idea +/public +node_modules +nohup.out +.DS_Store - trace.out ++trace.out ++.hugo_build.lock diff --cc docs/archetypes/default.md index f30f01f7,00000000..bd2ad411 mode 100644,000000..100644 --- a/docs/archetypes/default.md +++ b/docs/archetypes/default.md @@@ -1,13 -1,0 +1,12 @@@ +--- +linktitle: "" +description: "" - godocref: "" +publishdate: "" +lastmod: "" +categories: [] +tags: [] +weight: 00 +slug: "" +aliases: [] +toc: false - --- ++--- diff --cc docs/archetypes/functions.md index 0a5dd344,00000000..cc9b02b3 mode 100644,000000..100644 --- a/docs/archetypes/functions.md +++ b/docs/archetypes/functions.md @@@ -1,17 -1,0 +1,16 @@@ +--- +linktitle: "" +description: "" - godocref: "" +publishdate: "" +lastmod: "" +categories: [functions] +tags: [] +ns: "" +signature: [] +workson: [] +hugoversion: "" +aliases: [] +relatedfuncs: [] +toc: false +deprecated: false - --- ++--- diff --cc docs/content/en/content-management/comments.md index b5357cba,00000000..bbeb21ad mode 100644,000000..100644 --- a/docs/content/en/content-management/comments.md +++ b/docs/content/en/content-management/comments.md @@@ -1,77 -1,0 +1,75 @@@ +--- +title: Comments +linktitle: Comments +description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website. +date: 2017-02-01 +publishdate: 2017-02-01 +lastmod: 2017-03-09 +keywords: [sections,content,organization] +categories: [project organization, fundamentals] +menu: + docs: + parent: "content-management" + weight: 140 +weight: 140 #rem +draft: false +aliases: [/extras/comments/] +toc: true +--- + +Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to websites via JavaScript. + +Your theme may already support Disqus, but if not, it is easy to add to your templates via [Hugo's built-in Disqus partial][disquspartial]. + +## Add Disqus + +Hugo comes with all the code you need to load Disqus into your templates. Before adding Disqus to your site, you'll need to [set up an account][disqussetup]. + +### Configure Disqus + +Disqus comments require you set a single value in your [site's configuration file][configuration] like so: + +{{< code-toggle copy="false" >}} +disqusShortname = "yourdiscussshortname" +{{}} + +For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter][] of a single content file: + +* `disqus_identifier` +* `disqus_title` +* `disqus_url` + +### Render Hugo's Built-in Disqus Partial Template + +Disqus has its own [internal template](https://gohugo.io/templates/internal/#disqus) available, to render it add the following code where you want comments to appear: + +``` +{{ template "_internal/disqus.html" . }} +``` + - ## Comments Alternatives ++## Alternatives + - There are a few alternatives to commenting on static sites for those who do not want to use Disqus: ++These are some alternatives to Disqus: + - * [Staticman](https://staticman.net/) - * [Talkyard](https://www.talkyard.io/blog-comments) (Open source, & serverless hosting) ++* [Cactus Comments](https://cactus.chat/docs/integrations/hugo/) (Open Source, Matrix appservice, Docker install) ++* [Commento](https://commento.io/) (Open Source, available as a service, local install, or docker image) ++* [Graph Comment](https://graphcomment.com/) ++* [Hyvor Talk](https://talk.hyvor.com/) (Available as a service) +* [IntenseDebate](https://intensedebate.com/) - * [Graph Comment][] ++* [Isso](https://posativ.org/isso/) (Self-hosted, Python) ([tutorial][issotutorial]) +* [Muut](https://muut.com/) - * [Isso](https://posativ.org/isso/) (Self-hosted, Python) - * [Tutorial on Implementing Isso with Hugo][issotutorial] ++* [Remark42](https://remark42.com/) (Open source, Golang, Easy to run docker) ++* [Staticman](https://staticman.net/) ++* [Talkyard](https://www.talkyard.io/blog-comments) (Open source, & serverless hosting) +* [Utterances](https://utteranc.es/) (Open source, GitHub comments widget built on GitHub issues) - * [Remark](https://github.com/umputun/remark) (Open source, Golang, Easy to run docker) - * [Commento](https://commento.io/) (Open Source, available as a service, local install, or docker image) - * [Hyvor Talk](https://talk.hyvor.com/) (Available as a service) - + +[configuration]: /getting-started/configuration/ +[disquspartial]: /templates/partials/#disqus +[disqussetup]: https://disqus.com/profile/signup/ +[forum]: https://discourse.gohugo.io +[front matter]: /content-management/front-matter/ - [Graph Comment]: https://graphcomment.com/ +[kaijuissue]: https://github.com/spf13/kaiju/issues/new +[issotutorial]: https://stiobhart.net/2017-02-24-isso-comments/ +[partials]: /templates/partials/ +[MongoDB]: https://www.mongodb.com/ +[tweet]: https://twitter.com/spf13 diff --cc docs/content/en/content-management/front-matter.md index d1b1f20b,00000000..0353fb1f mode 100644,000000..100644 --- a/docs/content/en/content-management/front-matter.md +++ b/docs/content/en/content-management/front-matter.md @@@ -1,247 -1,0 +1,247 @@@ +--- +title: Front Matter +linktitle: +description: Hugo allows you to add front matter in yaml, toml, or json to your content files. +date: 2017-01-09 +publishdate: 2017-01-09 +lastmod: 2017-02-24 +categories: [content management] +keywords: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"] +menu: + docs: + parent: "content-management" + weight: 30 +weight: 30 #rem +draft: false +aliases: [/content/front-matter/] +toc: true +--- + +**Front matter** allows you to keep metadata attached to an instance of a [content type][]---i.e., embedded inside a content file---and is one of the many features that gives Hugo its strength. + +{{< youtube Yh2xKRJGff4 >}} + +## Front Matter Formats + +Hugo supports four formats for front matter, each with their own identifying tokens. + +TOML +: identified by opening and closing `+++`. + +YAML +: identified by opening and closing `---`. + +JSON +: a single JSON object surrounded by '`{`' and '`}`', followed by a new line. + +ORG +: a group of Org mode keywords in the format '`#+KEY: VALUE`'. Any line that does not start with `#+` ends the front matter section. + Keyword values can be either strings (`#+KEY: VALUE`) or a whitespace separated list of strings (`#+KEY[]: VALUE_1 VALUE_2`). + +### Example + +{{< code-toggle >}} +title = "spf13-vim 3.0 release and new website" +description = "spf13-vim is a cross platform distribution of vim plugins and resources for Vim." +tags = [ ".vimrc", "plugins", "spf13-vim", "vim" ] +date = "2012-04-06" +categories = [ + "Development", + "VIM" +] +slug = "spf13-vim-3-0-release-and-new-website" +{{< /code-toggle >}} + +## Front Matter Variables + +### Predefined + +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 +: 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. + +audio +: an array of paths to audio files related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:audio`. + +cascade +: a map of Front Matter keys whose values are passed down to the page's descendents unless overwritten by self or a closer ancestor's cascade. See [Front Matter Cascade](#front-matter-cascade) for details. + +date +: the datetime assigned to this page. This is usually fetched from the `date` field in front matter, but this behaviour is configurable. + +description +: the description for the content. + +draft +: if `true`, the content will not be rendered unless the `--buildDrafts` flag is passed to the `hugo` command. + +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 +: if `true`, sets a leaf bundle to be [headless][headless-bundle]. + +images +: an array of paths to images related to the page; used by [internal templates](/templates/internal) such as `_internal/twitter_cards.html`. + +isCJKLanguage +: if `true`, Hugo will explicitly treat the content as a CJK language; both `.Summary` and `.WordCount` work properly in CJK languages. + +keywords +: the meta keywords for the content. + +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 +: the datetime at which the content was last modified. + +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 +: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown. + +outputs +: allows you to specify output formats specific to the content. See [output formats][outputs]. + +publishDate +: if in the future, content will not be rendered unless the `--buildFuture` flag is passed to `hugo`. + +resources +: used for configuring page bundle resources. See [Page Resources][page-resources]. + +series +: an array of series this page belongs to, as a subset of the `series` [taxonomy](/content-management/taxonomies/); used by the `opengraph` [internal template](/templates/internal) to populate `og:see_also`. + +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. + +summary +: text used when providing a summary of the article in the `.Summary` page variable; details available in the [content-summaries](/content-management/summaries/) section. + +title +: the title for the content. + +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 +: 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. + +videos +: an array of paths to videos related to the page; used by the `opengraph` [internal template](/templates/internal) to populate `og:video`. + +weight +: used for [ordering your content in lists][ordering]. Lower weight gets higher precedence. So content with lower weight will come first. If set, weights should be non-zero, as 0 is interpreted as an *unset* weight. + +\ +: 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 %}} + +### User-Defined + +You can add fields to your front matter arbitrarily to meet your needs. These user-defined key-values are placed into a single `.Params` variable for use in your templates. + +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 +{{}} + +## Front Matter Cascade + +Any node or section can pass down to descendents a set of Front Matter values as long as defined underneath the reserved `cascade` Front Matter key. + +### Target Specific Pages + +{{< new-in "0.76.0" >}} + +Since Hugo 0.76 the `cascade` block can be a slice with a optional `_target` keyword, allowing for multiple `cascade` values targeting different page sets. + +{{< code-toggle copy="false" >}} +title ="Blog" +[[cascade]] +background = "yosemite.jpg" +[cascade._target] +path="/blog/**" +lang="en" +kind="page" +[[cascade]] +background = "goldenbridge.jpg" +[cascade._target] +kind="section" +{{}} + +Keywords available for `_target`: + +path +: A [Glob](https://github.com/gobwas/glob) pattern matching the content path below /content. Expects Unix-styled slashes. Note that this is the virtual path, so it starts at the mount root. The matching support double-asterisks so you can match for patterns like `/blog/*/**` to match anything from the third level and down. + +kind - : A Glob pattern matching the Page's Kind(s), e.g. "{home,section}". ++: The Page's Kind, e.g. "section". + +lang +: A Glob pattern matching the Page's language, e.g. "{en,sv}". + +Any of the above can be omitted. + +### Example + +In `content/blog/_index.md` + +{{< code-toggle copy="false" >}} +title: Blog +cascade: + banner: images/typewriter.jpg +{{}} + +With the above example the Blog section page and its descendents will return `images/typewriter.jpg` when `.Params.banner` is invoked unless: + +- Said descendent has its own `banner` value set +- Or a closer ancestor node has its own `cascade.banner` value set. + + + +## Order Content Through Front Matter + +You can assign content-specific `weight` in the front matter of your content. These values are especially useful for [ordering][ordering] in list views. You can use `weight` for ordering of content and the convention of [`_weight`][taxweight] for ordering content within a taxonomy. See [Ordering and Grouping Hugo Lists][lists] to see how `weight` can be used to organize your content in list views. + +## Override Global Markdown Configuration + +It's possible to set some options for Markdown rendering in a content's front matter as an override to the [BlackFriday rendering options set in your project configuration][config]. + +## Front Matter Format Specs + +* [TOML Spec][toml] +* [YAML Spec][yaml] +* [JSON Spec][json] + +[variables]: /variables/ +[aliases]: /content-management/urls/#aliases +[archetype]: /content-management/archetypes/ +[bylinktitle]: /templates/lists/#by-link-title +[config]: /getting-started/configuration/ "Hugo documentation for site configuration" +[content type]: /content-management/types/ +[contentorg]: /content-management/organization/ +[definetype]: /content-management/types/#defining-a-content-type "Learn how to specify a type and a layout in a content's front matter" +[headless-bundle]: /content-management/page-bundles/#headless-bundle +[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf "Specification for JSON, JavaScript Object Notation" +[lists]: /templates/lists/#ordering-content "See how to order content in list pages; for example, templates that look to specific _index.md for content and front matter." +[lookup]: /templates/lookup-order/ "Hugo traverses your templates in a specific order when rendering content to allow for DRYer templating." +[ordering]: /templates/lists/ "Hugo provides multiple ways to sort and order your content in list templates" +[outputs]: /templates/output-formats/ "With the release of v22, you can output your content to any text format using Hugo's familiar templating" +[page-resources]: /content-management/page-resources/ +[pagevars]: /variables/page/ +[section]: /content-management/sections/ +[taxweight]: /content-management/taxonomies/ +[toml]: https://github.com/toml-lang/toml "Specification for TOML, Tom's Obvious Minimal Language" +[urls]: /content-management/urls/ +[variables]: /variables/ +[yaml]: https://yaml.org/spec/ "Specification for YAML, YAML Ain't Markup Language" diff --cc docs/content/en/content-management/shortcodes.md index d65b9d3b,00000000..7d271041 mode 100644,000000..100644 --- a/docs/content/en/content-management/shortcodes.md +++ b/docs/content/en/content-management/shortcodes.md @@@ -1,445 -1,0 +1,444 @@@ +--- +title: Shortcodes +linktitle: +description: Shortcodes are simple snippets inside your content files calling built-in or custom templates. - godocref: +date: 2017-02-01 +publishdate: 2017-02-01 +lastmod: 2019-11-07 +menu: + docs: + parent: "content-management" + weight: 35 +weight: 35 #rem +categories: [content management] +keywords: [markdown,content,shortcodes] +draft: false +aliases: [/extras/shortcodes/] +testparam: "Hugo Rocks!" +toc: true +--- + +## What a Shortcode is + +Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video ` + +{{< /code >}} + +{{< code file="youtube-embed.html" copy="false" >}} +
+ +
+{{< /code >}} + +### Single Named Example: `image` + +Let's say you want to create your own `img` shortcode rather than use Hugo's built-in [`figure` shortcode][figure]. Your goal is to be able to call the shortcode as follows in your content files: + +{{< code file="content-image.md" >}} +{{}} +{{< /code >}} + +You have created the shortcode at `/layouts/shortcodes/img.html`, which loads the following shortcode template: + +{{< code file="/layouts/shortcodes/img.html" >}} + +
+ {{ with .Get "link" }}{{ end }} + + {{ if .Get "link" }}{{ end }} + {{ if or (or (.Get "title") (.Get "caption")) (.Get "attr") }} +
{{ if isset .Params "title" }} +

{{ .Get "title" }}

{{ end }} + {{ if or (.Get "caption") (.Get "attr") }}

+ {{ .Get "caption" }} + {{ with .Get "attrlink" }} {{ end }} + {{ .Get "attr" }} + {{ if .Get "attrlink" }} {{ end }} +

{{ end }} +
+ {{ end }} +
+ +{{< /code >}} + +Would be rendered as: + +{{< code file="img-output.html" copy="false" >}} +
+ +
+

Steve Francia

+
+
+{{< /code >}} + +### Single Flexible Example: `vimeo` + +``` +{{}} +{{}} +``` + +Would load the template found at `/layouts/shortcodes/vimeo.html`: + +{{< code file="/layouts/shortcodes/vimeo.html" >}} +{{ if .IsNamedParams }} +
+ +
+{{ else }} +
+ +
+{{ end }} +{{< /code >}} + +Would be rendered as: + +{{< code file="vimeo-iframes.html" copy="false" >}} +
+ +
+
+ +
+{{< /code >}} + +### Paired Example: `highlight` + +The following is taken from `highlight`, which is a [built-in shortcode][] that ships with Hugo. + +{{< code file="highlight-example.md" >}} +{{}} + + This HTML + +{{}} +{{< /code >}} + +The template for the `highlight` shortcode uses the following code, which is already included in Hugo: + +``` +{{ .Get 0 | highlight .Inner }} +``` + +The rendered output of the HTML example code block will be as follows: + +{{< code file="syntax-highlighted.html" copy="false" >}} +
<html>
 +    <body> This HTML </body>
 +</html>
 +
+{{< /code >}} + +### Nested Shortcode: Image Gallery + +Hugo's [`.Parent` shortcode variable][parent] returns a boolean value depending on whether the shortcode in question is called within the context of a *parent* shortcode. This provides an inheritance model for common shortcode parameters. + +The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` parameter: + +{{< code file="layouts/shortcodes/gallery.html" >}} +
+ {{ .Inner }} +
+{{< /code >}} + +You also have an `img` shortcode with a single named `src` parameter that you want to call inside of `gallery` and other shortcodes, so that the parent defines the context of each `img`: + +{{< code file="layouts/shortcodes/img.html" >}} +{{- $src := .Get "src" -}} +{{- with .Parent -}} + +{{- else -}} + +{{- end -}} +{{< /code >}} + +You can then call your shortcode in your content as follows: + +``` +{{}} + {{}} + {{}} +{{}} +{{}} +``` + +This will output the following HTML. Note how the first two `img` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `img` only uses `src`: + +``` + + +``` + + +## Error Handling in Shortcodes + +Use the [errorf](/functions/errorf) template func and [.Position](/variables/shortcodes/) variable to get useful error messages in shortcodes: + +```bash +{{ with .Get "name" }} +{{ else }} +{{ errorf "missing value for param 'name': %s" .Position }} +{{ end }} +``` + +When the above fails, you will see an `ERROR` log similar to the below: + +```bash +ERROR 2018/11/07 10:05:55 missing value for param name: "/Users/bep/dev/go/gohugoio/hugo/docs/content/en/variables/shortcodes.md:32:1" +``` + +## More Shortcode Examples + +More shortcode examples can be found in the [shortcodes directory for spf13.com][spfscs] and the [shortcodes directory for the Hugo docs][docsshortcodes]. + + +## Inline Shortcodes + - {{< new-in "0.52.0" >}} ++{{< new-in "0.52" >}} + +Since Hugo 0.52, you can implement your shortcodes inline -- e.g. where you use them in the content file. This can be useful for scripting that you only need in one place. + +This feature is disabled by default, but can be enabled in your site config: + +{{< code-toggle file="config">}} +enableInlineShortcodes = true +{{< /code-toggle >}} + +It is disabled by default for security reasons. The security model used by Hugo's template handling assumes that template authors are trusted, but that the content files are not, so the templates are injection-safe from malformed input data. But in most situations you have full control over the content, too, and then `enableInlineShortcodes = true` would be considered safe. But it's something to be aware of: It allows ad-hoc [Go Text templates](https://golang.org/pkg/text/template/) to be executed from the content files. + +And once enabled, you can do this in your content files: + + ```go-text-template + {{}}{{ now }}{{}} + ``` + +The above will print the current date and time. + + Note that an inline shortcode's inner content is parsed and executed as a Go text template with the same context as a regular shortcode template. + +This means that the current page can be accessed via `.Page.Title` etc. This also means that there are no concept of "nested inline shortcodes". + +The same inline shortcode can be reused later in the same content file, with different params if needed, using the self-closing syntax: + + ```go-text-template +{{}} +``` + + +[basic content files]: /content-management/formats/ "See how Hugo leverages markdown--and other supported formats--to create content for your website." +[built-in shortcode]: /content-management/shortcodes/ +[config]: /getting-started/configuration/ "Learn more about Hugo's built-in configuration variables as well as how to us your site's configuration file to include global key-values that can be used throughout your rendered website." +[Content Management: Shortcodes]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes "Check this section if you are not familiar with the definition of what a shortcode is or if you are unfamiliar with how to use Hugo's built-in shortcodes in your content files." +[source organization]: /getting-started/directory-structure/#directory-structure-explained "Learn how Hugo scaffolds new sites and what it expects to find in each of your directories." +[docsshortcodes]: https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes "See the shortcode source directory for the documentation site you're currently reading." +[figure]: /content-management/shortcodes/#figure +[hugosc]: /content-management/shortcodes/#using-hugo-s-built-in-shortcodes +[lookup order]: /templates/lookup-order/ "See the order in which Hugo traverses your template files to decide where and how to render your content at build time" +[pagevars]: /variables/page/ "See which variables you can leverage in your templating for page vs list templates." +[parent]: /variables/shortcodes/ +[shortcodesvars]: /variables/shortcodes/ "Certain variables are specific to shortcodes, although most .Page variables can be accessed within your shortcode template." +[spfscs]: https://github.com/spf13/spf13.com/tree/master/layouts/shortcodes "See more examples of shortcodes by visiting the shortcode directory of the source for spf13.com, the blog of Hugo's creator, Steve Francia." +[templates]: /templates/ "The templates section of the Hugo docs." +[vimeoexample]: #single-flexible-example-vimeo +[youtubeshortcode]: /content-management/shortcodes/#youtube "See how to use Hugo's built-in YouTube shortcode." diff --cc docs/content/en/templates/template-debugging.md index 419581b9,00000000..fbe87382 mode 100644,000000..100644 --- a/docs/content/en/templates/template-debugging.md +++ b/docs/content/en/templates/template-debugging.md @@@ -1,77 -1,0 +1,76 @@@ +--- +title: Template Debugging +# linktitle: Template Debugging +description: You can use Go templates' `printf` function to debug your Hugo templates. These snippets provide a quick and easy visualization of the variables available to you in different contexts. - godocref: https://golang.org/pkg/fmt/ +date: 2017-02-01 +publishdate: 2017-02-01 +lastmod: 2017-02-01 +categories: [templates] +keywords: [debugging,troubleshooting] +menu: + docs: + parent: "templates" + weight: 180 +weight: 180 +sections_weight: 180 +draft: false +aliases: [] +toc: false +--- + +Here are some snippets you can add to your template to answer some common questions. + +These snippets use the `printf` function available in all Go templates. This function is an alias to the Go function, [fmt.Printf](https://golang.org/pkg/fmt/). + +## What Variables are Available in this Context? + +You can use the template syntax, `$.`, to get the top-level template context from anywhere in your template. This will print out all the values under, `.Site`. + +``` +{{ printf "%#v" $.Site }} +``` + +This will print out the value of `.Permalink`: + + +``` +{{ printf "%#v" .Permalink }} +``` + + +This will print out a list of all the variables scoped to the current context +(`.`, aka ["the dot"][tempintro]). + + +``` +{{ printf "%#v" . }} +``` + + +When developing a [homepage][], what does one of the pages you're looping through look like? + +``` +{{ range .Pages }} + {{/* The context, ".", is now each one of the pages as it goes through the loop */}} + {{ printf "%#v" . }} +{{ end }} +``` + +## Why Am I Showing No Defined Variables? + +Check that you are passing variables in the `partial` function: + +``` +{{ partial "header" }} +``` + +This example will render the header partial, but the header partial will not have access to any contextual variables. You need to pass variables explicitly. For example, note the addition of ["the dot"][tempintro]. + +``` +{{ partial "header" . }} +``` + +The dot (`.`) is considered fundamental to understanding Hugo templating. For more information, see [Introduction to Hugo Templating][tempintro]. + +[homepage]: /templates/homepage/ +[tempintro]: /templates/introduction/ diff --cc docs/content/zh/templates/base.md index 689a5440,00000000..3a1aa479 mode 100644,000000..100644 --- a/docs/content/zh/templates/base.md +++ b/docs/content/zh/templates/base.md @@@ -1,132 -1,0 +1,131 @@@ +--- +title: Base 模板 and Blocks +linktitle: +description: The base and block constructs allow you to define the outer shell of your master templates (i.e., the chrome of the page). - godocref: https://golang.org/pkg/text/template/#example_Template_block +date: 2017-02-01 +publishdate: 2018-08-11 +lastmod: 2017-02-01 +categories: [templates,fundamentals] +keywords: [blocks,base] +menu: + docs: + parent: "templates" + weight: 20 +weight: 20 +sections_weight: 20 +draft: false +aliases: [/templates/blocks/,/templates/base-templates-and-blocks/] +toc: true +--- + +The `block` keyword allows you to define the outer shell of your pages' one or more master template(s) and then fill in or override portions as necessary. + +{{< youtube QVOMCYitLEc >}} + +## Base Template Lookup Order + +The [lookup order][lookup] for base templates is as follows: + +1. `/layouts/section/-baseof.html` +2. `/themes//layouts/section/-baseof.html` +3. `/layouts//baseof.html` +4. `/themes//layouts//baseof.html` +5. `/layouts/section/baseof.html` +6. `/themes//layouts/section/baseof.html` +7. `/layouts/_default/-baseof.html` +8. `/themes//layouts/_default/-baseof.html` +9. `/layouts/_default/baseof.html` +10. `/themes//layouts/_default/baseof.html` + +Variables are denoted by capitalized text set within `<>`. Note that Hugo's default behavior is for `type` to inherit from `section` unless otherwise specified. + +### Example Base Template Lookup Order + +As an example, let's assume your site is using a theme called "mytheme" when rendering the section list for a `posts` section. Hugo picks `layout/section/posts.html` as the template for [rendering the section][]. The `{{define}}` block in this template tells Hugo that the template is an extension of a base template. + +Here is the lookup order for the `posts` base template: + +1. `/layouts/section/posts-baseof.html` +2. `/themes/mytheme/layouts/section/posts-baseof.html` +3. `/layouts/posts/baseof.html` +4. `/themes/mytheme/layouts/posts/baseof.html` +5. `/layouts/section/baseof.html` +6. `/themes/mytheme/layouts/section/baseof.html` +7. `/layouts/_default/posts-baseof.html` +8. `/themes/mytheme/layouts/_default/posts-baseof.html` +9. `/layouts/_default/baseof.html` +10. `/themes/mytheme/layouts/_default/baseof.html` + +## Define the Base Template + +The following defines a simple base template at `_default/baseof.html`. As a default template, it is the shell from which all your pages will be rendered unless you specify another `*baseof.html` closer to the beginning of the lookup order. + +{{< code file="layouts/_default/baseof.html" download="baseof.html" >}} + + + + + {{ block "title" . }} + <!-- Blocks may include default content. --> + {{ .Site.Title }} + {{ end }} + + + + {{ block "main" . }} + + {{ end }} + {{ block "footer" . }} + + {{ end }} + + +{{< /code >}} + +## Override the Base Template + +From the above base template, you can define a [default list template][hugolists]. The default list template will inherit all of the code defined above and can then implement its own `"main"` block from: + +{{< code file="layouts/_default/list.html" download="list.html" >}} +{{ define "main" }} +

Posts

+ {{ range .Pages }} +
+

{{ .Title }}

+ {{ .Content }} +
+ {{ end }} +{{ end }} +{{< /code >}} + +This replaces the contents of our (basically empty) "main" block with something useful for the list template. In this case, we didn't define a `"title"` block, so the contents from our base template remain unchanged in lists. + +{{% warning %}} +Code that you put outside the block definitions *can* break your layout. This even includes HTML comments. For example: + +``` + +{{ define "main" }} +...your code here +{{ end }} +``` +[See this thread from the Hugo discussion forums.](https://discourse.gohugo.io/t/baseof-html-block-templates-and-list-types-results-in-empty-pages/5612/6) +{{% /warning %}} + +The following shows how you can override both the `"main"` and `"title"` block areas from the base template with code unique to your [default single page template][singletemplate]: + +{{< code file="layouts/_default/single.html" download="single.html" >}} +{{ define "title" }} + + {{ .Title }} – {{ .Site.Title }} +{{ end }} +{{ define "main" }} +

{{ .Title }}

+ {{ .Content }} +{{ end }} +{{< /code >}} + +[hugolists]: /templates/lists +[lookup]: /templates/lookup-order/ +[rendering the section]: /templates/section-templates/ +[singletemplate]: /templates/single-page-templates/ diff --cc docs/data/docs.json index 3a0bfe59,00000000..04916b58 mode 100644,000000..100644 --- a/docs/data/docs.json +++ b/docs/data/docs.json @@@ -1,5436 -1,0 +1,5436 @@@ +{ + "chroma": { + "lexers": [ + { + "Name": "ABAP", + "Aliases": [ + "ABAP", + "abap" + ] + }, + { + "Name": "ABNF", + "Aliases": [ + "abnf" + ] + }, + { + "Name": "ActionScript", + "Aliases": [ + "actionscript", + "as" + ] + }, + { + "Name": "ActionScript 3", + "Aliases": [ + "actionscript3", + "as", + "as3" + ] + }, + { + "Name": "Ada", + "Aliases": [ + "ada", + "ada2005", + "ada95", + "adb", + "ads" + ] + }, + { + "Name": "AL", + "Aliases": [ + "al", + "dal" + ] + }, + { + "Name": "Angular2", + "Aliases": [ + "ng2" + ] + }, + { + "Name": "ANTLR", + "Aliases": [ + "antlr" + ] + }, + { + "Name": "ApacheConf", + "Aliases": [ + "aconf", + "apache", + "apacheconf", + "conf", + "htaccess" + ] + }, + { + "Name": "APL", + "Aliases": [ + "apl" + ] + }, + { + "Name": "AppleScript", + "Aliases": [ + "applescript" + ] + }, + { + "Name": "Arduino", + "Aliases": [ + "arduino", + "ino" + ] + }, + { + "Name": "Awk", + "Aliases": [ + "awk", + "gawk", + "mawk", + "nawk" + ] + }, + { + "Name": "Ballerina", + "Aliases": [ + "bal", + "ballerina" + ] + }, + { + "Name": "Base Makefile", + "Aliases": [ + "*", + "bsdmake", + "mak", + "make", + "makefile", + "mf", + "mk" + ] + }, + { + "Name": "Bash", + "Aliases": [ + "bash", + "bash_*", + "bashrc", + "ebuild", + "eclass", + "env", + "exheres-0", + "exlib", + "ksh", + "sh", + "shell", + "zsh", + "zshrc" + ] + }, + { + "Name": "Batchfile", + "Aliases": [ + "bat", + "batch", + "cmd", + "dosbatch", + "winbatch" + ] + }, + { + "Name": "BibTeX", + "Aliases": [ + "bib", + "bibtex" + ] + }, + { + "Name": "BlitzBasic", + "Aliases": [ + "b3d", + "bb", + "blitzbasic", + "bplus", + "decls" + ] + }, + { + "Name": "BNF", + "Aliases": [ + "bnf" + ] + }, + { + "Name": "Brainfuck", + "Aliases": [ + "b", + "bf", + "brainfuck" + ] + }, + { + "Name": "C", + "Aliases": [ + "c", + "h", + "idc", + "x[bp]m" + ] + }, + { + "Name": "C#", + "Aliases": [ + "c#", + "cs", + "csharp" + ] + }, + { + "Name": "C++", + "Aliases": [ + "C", + "CPP", + "H", + "c++", + "cc", + "cp", + "cpp", + "cxx", + "h++", + "hh", + "hpp", + "hxx" + ] + }, + { + "Name": "Caddyfile", + "Aliases": [ + "caddy", + "caddyfile" + ] + }, + { + "Name": "Caddyfile Directives", + "Aliases": [ + "caddy-d", + "caddyfile-d", + "caddyfile-directives" + ] + }, + { + "Name": "Cap'n Proto", + "Aliases": [ + "capnp" + ] + }, + { + "Name": "Cassandra CQL", + "Aliases": [ + "cassandra", + "cql" + ] + }, + { + "Name": "Ceylon", + "Aliases": [ + "ceylon" + ] + }, + { + "Name": "CFEngine3", + "Aliases": [ + "cf", + "cf3", + "cfengine3" + ] + }, + { + "Name": "cfstatement", + "Aliases": [ + "cfs" + ] + }, + { + "Name": "ChaiScript", + "Aliases": [ + "chai", + "chaiscript" + ] + }, + { + "Name": "Cheetah", + "Aliases": [ + "cheetah", + "spitfire", + "spt", + "tmpl" + ] + }, + { + "Name": "Clojure", + "Aliases": [ + "clj", + "clojure" + ] + }, + { + "Name": "CMake", + "Aliases": [ + "cmake", + "txt" + ] + }, + { + "Name": "COBOL", + "Aliases": [ + "COB", + "CPY", + "cob", + "cobol", + "cpy" + ] + }, + { + "Name": "CoffeeScript", + "Aliases": [ + "coffee", + "coffee-script", + "coffeescript" + ] + }, + { + "Name": "Common Lisp", + "Aliases": [ + "cl", + "common-lisp", + "lisp" + ] + }, + { + "Name": "Coq", + "Aliases": [ + "coq", + "v" + ] + }, + { + "Name": "Crystal", + "Aliases": [ + "cr", + "crystal" + ] + }, + { + "Name": "CSS", + "Aliases": [ + "css" + ] + }, + { + "Name": "Cython", + "Aliases": [ + "cython", + "pxd", + "pxi", + "pyrex", + "pyx" + ] + }, + { + "Name": "D", + "Aliases": [ + "d", + "di" + ] + }, + { + "Name": "Dart", + "Aliases": [ + "dart" + ] + }, + { + "Name": "Diff", + "Aliases": [ + "diff", + "patch", + "udiff" + ] + }, + { + "Name": "Django/Jinja", + "Aliases": [ + "django", + "jinja" + ] + }, + { + "Name": "Docker", + "Aliases": [ + "docker", + "dockerfile" + ] + }, + { + "Name": "DTD", + "Aliases": [ + "dtd" + ] + }, + { + "Name": "Dylan", + "Aliases": [ + "dyl", + "dylan", + "intr" + ] + }, + { + "Name": "EBNF", + "Aliases": [ + "ebnf" + ] + }, + { + "Name": "Elixir", + "Aliases": [ + "elixir", + "ex", + "exs" + ] + }, + { + "Name": "Elm", + "Aliases": [ + "elm" + ] + }, + { + "Name": "EmacsLisp", + "Aliases": [ + "el", + "elisp", + "emacs", + "emacs-lisp" + ] + }, + { + "Name": "Erlang", + "Aliases": [ + "erl", + "erlang", + "es", + "escript", + "hrl" + ] + }, + { + "Name": "Factor", + "Aliases": [ + "factor" + ] + }, + { + "Name": "Fish", + "Aliases": [ + "fish", + "fishshell", + "load" + ] + }, + { + "Name": "Forth", + "Aliases": [ + "forth", + "frt", + "fs", + "fth" + ] + }, + { + "Name": "Fortran", + "Aliases": [ + "F03", + "F90", + "f03", + "f90", + "fortran" + ] + }, + { + "Name": "FortranFixed", + "Aliases": [ + "F", + "f", + "fortranfixed" + ] + }, + { + "Name": "FSharp", + "Aliases": [ + "fs", + "fsharp", + "fsi" + ] + }, + { + "Name": "GAS", + "Aliases": [ + "S", + "asm", + "gas", + "s" + ] + }, + { + "Name": "GDScript", + "Aliases": [ + "gd", + "gdscript" + ] + }, + { + "Name": "Genshi", + "Aliases": [ + "genshi", + "kid", + "xml+genshi", + "xml+kid" + ] + }, + { + "Name": "Genshi HTML", + "Aliases": [ + "html+genshi", + "html+kid" + ] + }, + { + "Name": "Genshi Text", + "Aliases": [ + "genshitext" + ] + }, + { + "Name": "Gherkin", + "Aliases": [ + "Cucumber", + "FEATURE", + "Gherkin", + "cucumber", + "feature", + "gherkin" + ] + }, + { + "Name": "GLSL", + "Aliases": [ + "frag", + "geo", + "glsl", + "vert" + ] + }, + { + "Name": "Gnuplot", + "Aliases": [ + "gnuplot", + "plot", + "plt" + ] + }, + { + "Name": "Go", + "Aliases": [ + "go", + "golang" + ] + }, + { + "Name": "Go HTML Template", + "Aliases": [ + "go-html-template" + ] + }, + { + "Name": "Go Text Template", + "Aliases": [ + "go-text-template" + ] + }, + { + "Name": "GraphQL", + "Aliases": [ + "gql", + "graphql", + "graphqls" + ] + }, + { + "Name": "Groff", + "Aliases": [ + "1p", + "3pm", + "[1-9]", + "groff", + "man", + "nroff" + ] + }, + { + "Name": "Groovy", + "Aliases": [ + "gradle", + "groovy" + ] + }, + { + "Name": "Handlebars", + "Aliases": [ + "handlebars", + "hbs" + ] + }, + { + "Name": "Haskell", + "Aliases": [ + "haskell", + "hs" + ] + }, + { + "Name": "Haxe", + "Aliases": [ + "haxe", + "hx", + "hxsl" + ] + }, + { + "Name": "HCL", + "Aliases": [ + "hcl" + ] + }, + { + "Name": "Hexdump", + "Aliases": [ + "hexdump" + ] + }, + { + "Name": "HLB", + "Aliases": [ + "hlb" + ] + }, + { + "Name": "HTML", + "Aliases": [ + "htm", + "html", + "xhtml", + "xslt" + ] + }, + { + "Name": "HTTP", + "Aliases": [ + "http" + ] + }, + { + "Name": "Hy", + "Aliases": [ + "hy", + "hylang" + ] + }, + { + "Name": "Idris", + "Aliases": [ + "idr", + "idris" + ] + }, + { + "Name": "Igor", + "Aliases": [ + "igor", + "igorpro", + "ipf" + ] + }, + { + "Name": "INI", + "Aliases": [ + "cfg", + "dosini", + "editorconfig", + "gitconfig", + "inf", + "ini" + ] + }, + { + "Name": "Io", + "Aliases": [ + "io" + ] + }, + { + "Name": "J", + "Aliases": [ + "ijs", + "j" + ] + }, + { + "Name": "Java", + "Aliases": [ + "java" + ] + }, + { + "Name": "JavaScript", + "Aliases": [ + "javascript", + "js", + "jsm", + "mjs" + ] + }, + { + "Name": "JSON", + "Aliases": [ + "json" + ] + }, + { + "Name": "Julia", + "Aliases": [ + "jl", + "julia" + ] + }, + { + "Name": "Jungle", + "Aliases": [ + "jungle" + ] + }, + { + "Name": "Kotlin", + "Aliases": [ + "kotlin", + "kt" + ] + }, + { + "Name": "Lighttpd configuration file", + "Aliases": [ + "lighttpd", + "lighty" + ] + }, + { + "Name": "LLVM", + "Aliases": [ + "ll", + "llvm" + ] + }, + { + "Name": "Lua", + "Aliases": [ + "lua", + "wlua" + ] + }, + { + "Name": "Mako", + "Aliases": [ + "mako", + "mao" + ] + }, + { + "Name": "markdown", + "Aliases": [ + "markdown", + "md", + "mkd" + ] + }, + { + "Name": "Mason", + "Aliases": [ + "m", + "mason", + "mc", + "mhtml", + "mi" + ] + }, + { + "Name": "Mathematica", + "Aliases": [ + "cdf", + "ma", + "mathematica", + "mma", + "nb", + "nbp" + ] + }, + { + "Name": "Matlab", + "Aliases": [ + "m", + "matlab" + ] + }, + { + "Name": "mcfunction", + "Aliases": [ + "mcfunction" + ] + }, + { + "Name": "Metal", + "Aliases": [ + "metal" + ] + }, + { + "Name": "MiniZinc", + "Aliases": [ + "MZN", + "dzn", + "fzn", + "minizinc", + "mzn" + ] + }, + { + "Name": "MLIR", + "Aliases": [ + "mlir" + ] + }, + { + "Name": "Modula-2", + "Aliases": [ + "def", + "m2", + "mod", + "modula2" + ] + }, + { + "Name": "MonkeyC", + "Aliases": [ + "mc", + "monkeyc" + ] + }, + { + "Name": "MorrowindScript", + "Aliases": [ + "morrowind", + "mwscript" + ] + }, + { + "Name": "Myghty", + "Aliases": [ + "myghty", + "myt" + ] + }, + { + "Name": "MySQL", + "Aliases": [ + "mysql", + "sql" + ] + }, + { + "Name": "NASM", + "Aliases": [ + "ASM", + "asm", + "nasm" + ] + }, + { + "Name": "Newspeak", + "Aliases": [ + "newspeak", + "ns2" + ] + }, + { + "Name": "Nginx configuration file", + "Aliases": [ + "conf", + "nginx" + ] + }, + { + "Name": "Nim", + "Aliases": [ + "nim", + "nimrod" + ] + }, + { + "Name": "Nix", + "Aliases": [ + "nix", + "nixos" + ] + }, + { + "Name": "Objective-C", + "Aliases": [ + "h", + "m", + "obj-c", + "objc", + "objective-c", + "objectivec" + ] + }, + { + "Name": "OCaml", + "Aliases": [ + "ml", + "mli", + "mll", + "mly", + "ocaml" + ] + }, + { + "Name": "Octave", + "Aliases": [ + "m", + "octave" + ] + }, + { + "Name": "OpenSCAD", + "Aliases": [ + "openscad", + "scad" + ] + }, + { + "Name": "Org Mode", + "Aliases": [ + "org", + "orgmode" + ] + }, + { + "Name": "PacmanConf", + "Aliases": [ + "conf", + "pacmanconf" + ] + }, + { + "Name": "Perl", + "Aliases": [ + "perl", + "pl", + "pm", + "t" + ] + }, + { + "Name": "PHP", + "Aliases": [ + "inc", + "php", + "php3", + "php4", + "php5", + "php[345]" + ] + }, + { + "Name": "PHTML", + "Aliases": [ + "inc", + "php", + "php[345]", + "phtml" + ] + }, + { + "Name": "Pig", + "Aliases": [ + "pig" + ] + }, + { + "Name": "PkgConfig", + "Aliases": [ + "pc", + "pkgconfig" + ] + }, + { + "Name": "PL/pgSQL", + "Aliases": [ + "plpgsql" + ] + }, + { + "Name": "plaintext", + "Aliases": [ + "no-highlight", + "plain", + "text", + "txt" + ] + }, + { + "Name": "Pony", + "Aliases": [ + "pony" + ] + }, + { + "Name": "PostgreSQL SQL dialect", + "Aliases": [ + "postgres", + "postgresql" + ] + }, + { + "Name": "PostScript", + "Aliases": [ + "eps", + "postscr", + "postscript", + "ps" + ] + }, + { + "Name": "POVRay", + "Aliases": [ + "inc", + "pov" + ] + }, + { + "Name": "PowerQuery", + "Aliases": [ + "powerquery", + "pq" + ] + }, + { + "Name": "PowerShell", + "Aliases": [ + "posh", + "powershell", + "ps1", + "psd1", + "psm1" + ] + }, + { + "Name": "Prolog", + "Aliases": [ + "ecl", + "pl", + "pro", + "prolog" + ] + }, + { + "Name": "PromQL", + "Aliases": [ + "promql" + ] + }, + { + "Name": "Protocol Buffer", + "Aliases": [ + "proto", + "protobuf" + ] + }, + { + "Name": "Puppet", + "Aliases": [ + "pp", + "puppet" + ] + }, + { + "Name": "Python", + "Aliases": [ + "bazel", + "bzl", + "jy", + "py", + "py3", + "pyi", + "python", + "python3", + "pyw", + "sage", + "sc", + "tac" + ] + }, + { + "Name": "Python 2", + "Aliases": [ + "py2", + "python2" + ] + }, + { + "Name": "QBasic", + "Aliases": [ + "BAS", + "bas", + "basic", + "qbasic" + ] + }, + { + "Name": "QML", + "Aliases": [ + "qbs", + "qml" + ] + }, + { + "Name": "R", + "Aliases": [ + "R", + "Renviron", + "Rhistory", + "Rprofile", + "S", + "r", + "s", + "splus" + ] + }, + { + "Name": "Racket", + "Aliases": [ + "racket", + "rkt", + "rktd", + "rktl" + ] + }, + { + "Name": "Ragel", + "Aliases": [ + "ragel" + ] + }, + { + "Name": "Raku", + "Aliases": [ + "6pl", + "6pm", + "nqp", + "p6", + "p6l", + "p6m", + "perl6", + "pl", + "pl6", + "pm", + "pm6", + "raku", + "rakudoc", + "rakumod", + "rakutest", + "t" + ] + }, + { + "Name": "react", + "Aliases": [ + "jsx", + "react" + ] + }, + { + "Name": "ReasonML", + "Aliases": [ + "re", + "reason", + "reasonml", + "rei" + ] + }, + { + "Name": "reg", + "Aliases": [ + "reg", + "registry" + ] + }, + { + "Name": "reStructuredText", + "Aliases": [ + "rest", + "restructuredtext", + "rst" + ] + }, + { + "Name": "Rexx", + "Aliases": [ + "arexx", + "rex", + "rexx", + "rx" + ] + }, + { + "Name": "Ruby", + "Aliases": [ + "duby", + "gemspec", + "rake", + "rb", + "rbw", + "rbx", + "ruby" + ] + }, + { + "Name": "Rust", + "Aliases": [ + "in", + "rs", + "rust" + ] + }, + { + "Name": "SAS", + "Aliases": [ + "SAS", + "sas" + ] + }, + { + "Name": "Sass", + "Aliases": [ + "sass" + ] + }, + { + "Name": "Scala", + "Aliases": [ + "scala" + ] + }, + { + "Name": "Scheme", + "Aliases": [ + "scheme", + "scm", + "ss" + ] + }, + { + "Name": "Scilab", + "Aliases": [ + "sce", + "sci", + "scilab", + "tst" + ] + }, + { + "Name": "SCSS", + "Aliases": [ + "scss" + ] + }, + { + "Name": "Smalltalk", + "Aliases": [ + "smalltalk", + "squeak", + "st" + ] + }, + { + "Name": "Smarty", + "Aliases": [ + "smarty", + "tpl" + ] + }, + { + "Name": "Snobol", + "Aliases": [ + "snobol" + ] + }, + { + "Name": "Solidity", + "Aliases": [ + "sol", + "solidity" + ] + }, + { + "Name": "SPARQL", + "Aliases": [ + "rq", + "sparql" + ] + }, + { + "Name": "SQL", + "Aliases": [ + "sql" + ] + }, + { + "Name": "SquidConf", + "Aliases": [ + "conf", + "squid", + "squid.conf", + "squidconf" + ] + }, + { + "Name": "Standard ML", + "Aliases": [ + "fun", + "sig", + "sml" + ] + }, + { + "Name": "Stylus", + "Aliases": [ + "styl", + "stylus" + ] + }, + { + "Name": "Svelte", + "Aliases": [ + "svelte" + ] + }, + { + "Name": "Swift", + "Aliases": [ + "swift" + ] + }, + { + "Name": "SYSTEMD", + "Aliases": [ + "automount", + "device", + "dnssd", + "link", + "mount", + "netdev", + "network", + "path", + "scope", + "service", + "slice", + "socket", + "swap", + "systemd", + "target", + "timer" + ] + }, + { + "Name": "systemverilog", + "Aliases": [ + "sv", + "svh", + "systemverilog" + ] + }, + { + "Name": "TableGen", + "Aliases": [ + "tablegen", + "td" + ] + }, + { + "Name": "TASM", + "Aliases": [ + "ASM", + "asm", + "tasm" + ] + }, + { + "Name": "Tcl", + "Aliases": [ + "rvt", + "tcl" + ] + }, + { + "Name": "Tcsh", + "Aliases": [ + "csh", + "tcsh" + ] + }, + { + "Name": "Termcap", + "Aliases": [ + "src", + "termcap" + ] + }, + { + "Name": "Terminfo", + "Aliases": [ + "src", + "terminfo" + ] + }, + { + "Name": "Terraform", + "Aliases": [ + "terraform", + "tf" + ] + }, + { + "Name": "TeX", + "Aliases": [ + "aux", + "latex", + "tex", + "toc" + ] + }, + { + "Name": "Thrift", + "Aliases": [ + "thrift" + ] + }, + { + "Name": "TOML", + "Aliases": [ + "toml" + ] + }, + { + "Name": "TradingView", + "Aliases": [ + "tradingview", + "tv" + ] + }, + { + "Name": "Transact-SQL", + "Aliases": [ + "t-sql", + "tsql" + ] + }, + { + "Name": "Turing", + "Aliases": [ + "tu", + "turing" + ] + }, + { + "Name": "Turtle", + "Aliases": [ + "ttl", + "turtle" + ] + }, + { + "Name": "Twig", + "Aliases": [ + "twig" + ] + }, + { + "Name": "TypeScript", + "Aliases": [ + "ts", + "tsx", + "typescript" + ] + }, + { + "Name": "TypoScript", + "Aliases": [ + "ts", + "typoscript" + ] + }, + { + "Name": "TypoScriptCssData", + "Aliases": [ + "typoscriptcssdata" + ] + }, + { + "Name": "TypoScriptHtmlData", + "Aliases": [ + "typoscripthtmldata" + ] + }, + { + "Name": "VB.net", + "Aliases": [ + "bas", + "vb", + "vb.net", + "vbnet" + ] + }, + { + "Name": "verilog", + "Aliases": [ + "v", + "verilog" + ] + }, + { + "Name": "VHDL", + "Aliases": [ + "vhd", + "vhdl" + ] + }, + { + "Name": "VimL", + "Aliases": [ + "exrc", + "gvimrc", + "vim", + "vimrc" + ] + }, + { + "Name": "vue", + "Aliases": [ + "vue", + "vuejs" + ] + }, + { + "Name": "WDTE", + "Aliases": [ + "wdte" + ] + }, + { + "Name": "XML", + "Aliases": [ + "rss", + "svg", + "wsdl", + "wsf", + "xml", + "xsd", + "xsl", + "xslt" + ] + }, + { + "Name": "Xorg", + "Aliases": [ + "conf", + "xorg.conf" + ] + }, + { + "Name": "YAML", + "Aliases": [ + "yaml", + "yml" + ] + }, + { + "Name": "YANG", + "Aliases": [ + "yang" + ] + }, + { + "Name": "Zig", + "Aliases": [ + "zig" + ] + } + ] + }, + "config": { + "markup": { + "defaultMarkdownHandler": "goldmark", + "highlight": { + "style": "monokai", + "codeFences": true, + "noClasses": true, + "lineNos": false, + "lineNumbersInTable": true, + "anchorLineNos": false, + "lineAnchors": "", + "lineNoStart": 1, + "hl_Lines": "", + "tabWidth": 4, + "guessSyntax": false + }, + "tableOfContents": { + "startLevel": 2, + "endLevel": 3, + "ordered": false + }, + "goldmark": { + "renderer": { + "hardWraps": false, + "xhtml": false, + "unsafe": false + }, + "parser": { + "autoHeadingID": true, + "autoHeadingIDType": "github", + "attribute": { + "title": true, + "block": false + } + }, + "extensions": { + "typographer": true, + "footnote": true, + "definitionList": true, + "table": true, + "strikethrough": true, + "linkify": true, + "taskList": true + } + }, + "blackFriday": { + "smartypants": true, + "smartypantsQuotesNBSP": false, + "angledQuotes": false, + "fractions": true, + "hrefTargetBlank": false, + "nofollowLinks": false, + "noreferrerLinks": false, + "smartDashes": true, + "latexDashes": true, + "taskLists": true, + "plainIDAnchors": true, + "extensions": null, + "extensionsMask": null, + "skipHTML": false, + "footnoteAnchorPrefix": "", + "footnoteReturnLinkContents": "" + }, + "asciidocExt": { + "backend": "html5", + "extensions": [], + "attributes": {}, + "noHeaderOrFooter": true, + "safeMode": "unsafe", + "sectionNumbers": false, + "verbose": false, + "trace": false, + "failureLevel": "fatal", + "workingFolderCurrent": false, + "preserveTOC": false + } + }, + "mergeStrategy": { + "build": { + "_merge": "none" + }, + "caches": { + "_merge": "none" + }, + "cascade": { + "_merge": "none" + }, + "frontmatter": { + "_merge": "none" + }, + "imaging": { + "_merge": "none" + }, + "languages": { + "_merge": "none", + "en": { + "_merge": "none", + "menus": { + "_merge": "shallow" + }, + "params": { + "_merge": "deep" + } + } + }, + "markup": { + "_merge": "none" + }, + "mediatypes": { + "_merge": "shallow" + }, + "menus": { + "_merge": "shallow" + }, + "minify": { + "_merge": "none" + }, + "module": { + "_merge": "none" + }, + "outputformats": { + "_merge": "shallow" + }, + "params": { + "_merge": "deep" + }, + "permalinks": { + "_merge": "none" + }, + "related": { + "_merge": "none" + }, + "sitemap": { + "_merge": "none" + }, + "taxonomies": { + "_merge": "none" + } + }, + "minify": { + "minifyOutput": false, + "disableHTML": false, + "disableCSS": false, + "disableJS": false, + "disableJSON": false, + "disableSVG": false, + "disableXML": false, + "tdewolff": { + "html": { + "keepComments": false, + "keepConditionalComments": true, + "keepDefaultAttrVals": true, + "keepDocumentTags": true, + "keepEndTags": true, + "keepQuotes": false, + "keepWhitespace": true + }, + "css": { + "keepCSS2": true, + "precision": 0 + }, + "js": { + "precision": 0, + "keepVarNames": false + }, + "json": { + "precision": 0, + "keepNumbers": false + }, + "svg": { + "precision": 0 + }, + "xml": { + "keepWhitespace": false + } + } + } + }, + "media": { + "types": [ + { + "mainType": "application", + "subType": "javascript", + "delimiter": ".", + "firstSuffix": { + "suffix": "js", + "fullSuffix": ".js" + }, + "type": "application/javascript", + "string": "application/javascript", + "suffixes": [ + "js" + ] + }, + { + "mainType": "application", + "subType": "json", + "delimiter": ".", + "firstSuffix": { + "suffix": "json", + "fullSuffix": ".json" + }, + "type": "application/json", + "string": "application/json", + "suffixes": [ + "json" + ] + }, + { + "mainType": "application", + "subType": "manifest", + "delimiter": ".", + "firstSuffix": { + "suffix": "webmanifest", + "fullSuffix": ".webmanifest" + }, + "type": "application/manifest+json", + "string": "application/manifest+json", + "suffixes": [ + "webmanifest" + ] + }, + { + "mainType": "application", + "subType": "octet-stream", + "delimiter": ".", + "firstSuffix": { + "suffix": "", + "fullSuffix": "" + }, + "type": "application/octet-stream", + "string": "application/octet-stream", + "suffixes": [ + "" + ] + }, + { + "mainType": "application", + "subType": "rss", + "delimiter": ".", + "firstSuffix": { + "suffix": "xml", + "fullSuffix": ".xml" + }, + "type": "application/rss+xml", + "string": "application/rss+xml", + "suffixes": [ + "xml" + ] + }, + { + "mainType": "application", + "subType": "toml", + "delimiter": ".", + "firstSuffix": { + "suffix": "toml", + "fullSuffix": ".toml" + }, + "type": "application/toml", + "string": "application/toml", + "suffixes": [ + "toml" + ] + }, + { + "mainType": "application", + "subType": "typescript", + "delimiter": ".", + "firstSuffix": { + "suffix": "ts", + "fullSuffix": ".ts" + }, + "type": "application/typescript", + "string": "application/typescript", + "suffixes": [ + "ts" + ] + }, + { + "mainType": "application", + "subType": "xml", + "delimiter": ".", + "firstSuffix": { + "suffix": "xml", + "fullSuffix": ".xml" + }, + "type": "application/xml", + "string": "application/xml", + "suffixes": [ + "xml" + ] + }, + { + "mainType": "application", + "subType": "yaml", + "delimiter": ".", + "firstSuffix": { + "suffix": "yaml", + "fullSuffix": ".yaml" + }, + "type": "application/yaml", + "string": "application/yaml", + "suffixes": [ + "yaml", + "yml" + ] + }, + { + "mainType": "image", + "subType": "jpeg", + "delimiter": ".", + "firstSuffix": { + "suffix": "jpg", + "fullSuffix": ".jpg" + }, + "type": "image/jpeg", + "string": "image/jpeg", + "suffixes": [ + "jpg", + "jpeg" + ] + }, + { + "mainType": "image", + "subType": "png", + "delimiter": ".", + "firstSuffix": { + "suffix": "png", + "fullSuffix": ".png" + }, + "type": "image/png", + "string": "image/png", + "suffixes": [ + "png" + ] + }, + { + "mainType": "image", + "subType": "svg", + "delimiter": ".", + "firstSuffix": { + "suffix": "svg", + "fullSuffix": ".svg" + }, + "type": "image/svg+xml", + "string": "image/svg+xml", + "suffixes": [ + "svg" + ] + }, + { + "mainType": "image", + "subType": "webp", + "delimiter": ".", + "firstSuffix": { + "suffix": "webp", + "fullSuffix": ".webp" + }, + "type": "image/webp", + "string": "image/webp", + "suffixes": [ + "webp" + ] + }, + { + "mainType": "text", + "subType": "calendar", + "delimiter": ".", + "firstSuffix": { + "suffix": "ics", + "fullSuffix": ".ics" + }, + "type": "text/calendar", + "string": "text/calendar", + "suffixes": [ + "ics" + ] + }, + { + "mainType": "text", + "subType": "css", + "delimiter": ".", + "firstSuffix": { + "suffix": "css", + "fullSuffix": ".css" + }, + "type": "text/css", + "string": "text/css", + "suffixes": [ + "css" + ] + }, + { + "mainType": "text", + "subType": "csv", + "delimiter": ".", + "firstSuffix": { + "suffix": "csv", + "fullSuffix": ".csv" + }, + "type": "text/csv", + "string": "text/csv", + "suffixes": [ + "csv" + ] + }, + { + "mainType": "text", + "subType": "html", + "delimiter": ".", + "firstSuffix": { + "suffix": "html", + "fullSuffix": ".html" + }, + "type": "text/html", + "string": "text/html", + "suffixes": [ + "html" + ] + }, + { + "mainType": "text", + "subType": "jsx", + "delimiter": ".", + "firstSuffix": { + "suffix": "jsx", + "fullSuffix": ".jsx" + }, + "type": "text/jsx", + "string": "text/jsx", + "suffixes": [ + "jsx" + ] + }, + { + "mainType": "text", + "subType": "plain", + "delimiter": ".", + "firstSuffix": { + "suffix": "txt", + "fullSuffix": ".txt" + }, + "type": "text/plain", + "string": "text/plain", + "suffixes": [ + "txt" + ] + }, + { + "mainType": "text", + "subType": "tsx", + "delimiter": ".", + "firstSuffix": { + "suffix": "tsx", + "fullSuffix": ".tsx" + }, + "type": "text/tsx", + "string": "text/tsx", + "suffixes": [ + "tsx" + ] + }, + { + "mainType": "text", + "subType": "x-sass", + "delimiter": ".", + "firstSuffix": { + "suffix": "sass", + "fullSuffix": ".sass" + }, + "type": "text/x-sass", + "string": "text/x-sass", + "suffixes": [ + "sass" + ] + }, + { + "mainType": "text", + "subType": "x-scss", + "delimiter": ".", + "firstSuffix": { + "suffix": "scss", + "fullSuffix": ".scss" + }, + "type": "text/x-scss", + "string": "text/x-scss", + "suffixes": [ + "scss" + ] + }, + { + "mainType": "video", + "subType": "3gpp", + "delimiter": ".", + "firstSuffix": { + "suffix": "3gpp", + "fullSuffix": ".3gpp" + }, + "type": "video/3gpp", + "string": "video/3gpp", + "suffixes": [ + "3gpp", + "3gp" + ] + }, + { + "mainType": "video", + "subType": "mp4", + "delimiter": ".", + "firstSuffix": { + "suffix": "mp4", + "fullSuffix": ".mp4" + }, + "type": "video/mp4", + "string": "video/mp4", + "suffixes": [ + "mp4" + ] + }, + { + "mainType": "video", + "subType": "mpeg", + "delimiter": ".", + "firstSuffix": { + "suffix": "mpg", + "fullSuffix": ".mpg" + }, + "type": "video/mpeg", + "string": "video/mpeg", + "suffixes": [ + "mpg", + "mpeg" + ] + }, + { + "mainType": "video", + "subType": "ogg", + "delimiter": ".", + "firstSuffix": { + "suffix": "ogv", + "fullSuffix": ".ogv" + }, + "type": "video/ogg", + "string": "video/ogg", + "suffixes": [ + "ogv" + ] + }, + { + "mainType": "video", + "subType": "webm", + "delimiter": ".", + "firstSuffix": { + "suffix": "webm", + "fullSuffix": ".webm" + }, + "type": "video/webm", + "string": "video/webm", + "suffixes": [ + "webm" + ] + }, + { + "mainType": "video", + "subType": "x-msvideo", + "delimiter": ".", + "firstSuffix": { + "suffix": "avi", + "fullSuffix": ".avi" + }, + "type": "video/x-msvideo", + "string": "video/x-msvideo", + "suffixes": [ + "avi" + ] + } + ] + }, + "output": { + "formats": [ + { + "mediaType": "text/html", + "name": "HTML", + "path": "", + "baseName": "index", + "rel": "canonical", + "protocol": "", + "isPlainText": false, + "isHTML": true, + "noUgly": false, + "notAlternative": false, + "permalinkable": true, + "weight": 10 + }, + { + "mediaType": "text/html", + "name": "AMP", + "path": "amp", + "baseName": "index", + "rel": "amphtml", + "protocol": "", + "isPlainText": false, + "isHTML": true, + "noUgly": false, + "notAlternative": false, + "permalinkable": true, + "weight": 0 + }, + { + "mediaType": "text/css", + "name": "CSS", + "path": "", + "baseName": "styles", + "rel": "stylesheet", + "protocol": "", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": true, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "text/csv", + "name": "CSV", + "path": "", + "baseName": "index", + "rel": "alternate", + "protocol": "", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "text/calendar", + "name": "Calendar", + "path": "", + "baseName": "index", + "rel": "alternate", + "protocol": "webcal://", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "application/json", + "name": "JSON", + "path": "", + "baseName": "index", + "rel": "alternate", + "protocol": "", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "text/plain", + "name": "ROBOTS", + "path": "", + "baseName": "robots", + "rel": "alternate", + "protocol": "", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "application/rss+xml", + "name": "RSS", + "path": "", + "baseName": "index", + "rel": "alternate", + "protocol": "", + "isPlainText": false, + "isHTML": false, + "noUgly": true, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "application/xml", + "name": "Sitemap", + "path": "", + "baseName": "sitemap", + "rel": "sitemap", + "protocol": "", + "isPlainText": false, + "isHTML": false, + "noUgly": true, + "notAlternative": false, + "permalinkable": false, + "weight": 0 + }, + { + "mediaType": "application/manifest+json", + "name": "WebAppManifest", + "path": "", + "baseName": "manifest", + "rel": "manifest", + "protocol": "", + "isPlainText": true, + "isHTML": false, + "noUgly": false, + "notAlternative": true, + "permalinkable": false, + "weight": 0 + } + ], + "layouts": [ + { + "Example": "Single page in \"posts\" section", + "Kind": "page", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/single.html.html", + "layouts/posts/single.html", + "layouts/_default/single.html.html", + "layouts/_default/single.html" + ] + }, + { + "Example": "Base template for single page in \"posts\" section", + "Kind": "page", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/single-baseof.html.html", + "layouts/posts/baseof.html.html", + "layouts/posts/single-baseof.html", + "layouts/posts/baseof.html", + "layouts/_default/single-baseof.html.html", + "layouts/_default/baseof.html.html", + "layouts/_default/single-baseof.html", + "layouts/_default/baseof.html" + ] + }, + { + "Example": "Single page in \"posts\" section with layout set", + "Kind": "page", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/demolayout.html.html", + "layouts/posts/single.html.html", + "layouts/posts/demolayout.html", + "layouts/posts/single.html", + "layouts/_default/demolayout.html.html", + "layouts/_default/single.html.html", + "layouts/_default/demolayout.html", + "layouts/_default/single.html" + ] + }, + { + "Example": "Base template for single page in \"posts\" section with layout set", + "Kind": "page", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/demolayout-baseof.html.html", + "layouts/posts/single-baseof.html.html", + "layouts/posts/baseof.html.html", + "layouts/posts/demolayout-baseof.html", + "layouts/posts/single-baseof.html", + "layouts/posts/baseof.html", + "layouts/_default/demolayout-baseof.html.html", + "layouts/_default/single-baseof.html.html", + "layouts/_default/baseof.html.html", + "layouts/_default/demolayout-baseof.html", + "layouts/_default/single-baseof.html", + "layouts/_default/baseof.html" + ] + }, + { + "Example": "AMP single page", + "Kind": "page", + "OutputFormat": "AMP", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/single.amp.html", + "layouts/posts/single.html", + "layouts/_default/single.amp.html", + "layouts/_default/single.html" + ] + }, + { + "Example": "AMP single page, French language", + "Kind": "page", + "OutputFormat": "AMP", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/single.fr.amp.html", + "layouts/posts/single.amp.html", + "layouts/posts/single.fr.html", + "layouts/posts/single.html", + "layouts/_default/single.fr.amp.html", + "layouts/_default/single.amp.html", + "layouts/_default/single.fr.html", + "layouts/_default/single.html" + ] + }, + { + "Example": "Home page", + "Kind": "home", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/index.html.html", + "layouts/home.html.html", + "layouts/list.html.html", + "layouts/index.html", + "layouts/home.html", + "layouts/list.html", + "layouts/_default/index.html.html", + "layouts/_default/home.html.html", + "layouts/_default/list.html.html", + "layouts/_default/index.html", + "layouts/_default/home.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Base template for home page", + "Kind": "home", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/index-baseof.html.html", + "layouts/home-baseof.html.html", + "layouts/list-baseof.html.html", + "layouts/baseof.html.html", + "layouts/index-baseof.html", + "layouts/home-baseof.html", + "layouts/list-baseof.html", + "layouts/baseof.html", + "layouts/_default/index-baseof.html.html", + "layouts/_default/home-baseof.html.html", + "layouts/_default/list-baseof.html.html", + "layouts/_default/baseof.html.html", + "layouts/_default/index-baseof.html", + "layouts/_default/home-baseof.html", + "layouts/_default/list-baseof.html", + "layouts/_default/baseof.html" + ] + }, + { + "Example": "Home page with type set", + "Kind": "home", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/demotype/index.html.html", + "layouts/demotype/home.html.html", + "layouts/demotype/list.html.html", + "layouts/demotype/index.html", + "layouts/demotype/home.html", + "layouts/demotype/list.html", + "layouts/index.html.html", + "layouts/home.html.html", + "layouts/list.html.html", + "layouts/index.html", + "layouts/home.html", + "layouts/list.html", + "layouts/_default/index.html.html", + "layouts/_default/home.html.html", + "layouts/_default/list.html.html", + "layouts/_default/index.html", + "layouts/_default/home.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Base template for home page with type set", + "Kind": "home", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/demotype/index-baseof.html.html", + "layouts/demotype/home-baseof.html.html", + "layouts/demotype/list-baseof.html.html", + "layouts/demotype/baseof.html.html", + "layouts/demotype/index-baseof.html", + "layouts/demotype/home-baseof.html", + "layouts/demotype/list-baseof.html", + "layouts/demotype/baseof.html", + "layouts/index-baseof.html.html", + "layouts/home-baseof.html.html", + "layouts/list-baseof.html.html", + "layouts/baseof.html.html", + "layouts/index-baseof.html", + "layouts/home-baseof.html", + "layouts/list-baseof.html", + "layouts/baseof.html", + "layouts/_default/index-baseof.html.html", + "layouts/_default/home-baseof.html.html", + "layouts/_default/list-baseof.html.html", + "layouts/_default/baseof.html.html", + "layouts/_default/index-baseof.html", + "layouts/_default/home-baseof.html", + "layouts/_default/list-baseof.html", + "layouts/_default/baseof.html" + ] + }, + { + "Example": "Home page with layout set", + "Kind": "home", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/demolayout.html.html", + "layouts/index.html.html", + "layouts/home.html.html", + "layouts/list.html.html", + "layouts/demolayout.html", + "layouts/index.html", + "layouts/home.html", + "layouts/list.html", + "layouts/_default/demolayout.html.html", + "layouts/_default/index.html.html", + "layouts/_default/home.html.html", + "layouts/_default/list.html.html", + "layouts/_default/demolayout.html", + "layouts/_default/index.html", + "layouts/_default/home.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "AMP home, French language", + "Kind": "home", + "OutputFormat": "AMP", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/index.fr.amp.html", + "layouts/home.fr.amp.html", + "layouts/list.fr.amp.html", + "layouts/index.amp.html", + "layouts/home.amp.html", + "layouts/list.amp.html", + "layouts/index.fr.html", + "layouts/home.fr.html", + "layouts/list.fr.html", + "layouts/index.html", + "layouts/home.html", + "layouts/list.html", + "layouts/_default/index.fr.amp.html", + "layouts/_default/home.fr.amp.html", + "layouts/_default/list.fr.amp.html", + "layouts/_default/index.amp.html", + "layouts/_default/home.amp.html", + "layouts/_default/list.amp.html", + "layouts/_default/index.fr.html", + "layouts/_default/home.fr.html", + "layouts/_default/list.fr.html", + "layouts/_default/index.html", + "layouts/_default/home.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "JSON home", + "Kind": "home", + "OutputFormat": "JSON", + "Suffix": "json", + "Template Lookup Order": [ + "layouts/index.json.json", + "layouts/home.json.json", + "layouts/list.json.json", + "layouts/index.json", + "layouts/home.json", + "layouts/list.json", + "layouts/_default/index.json.json", + "layouts/_default/home.json.json", + "layouts/_default/list.json.json", + "layouts/_default/index.json", + "layouts/_default/home.json", + "layouts/_default/list.json" + ] + }, + { + "Example": "RSS home", + "Kind": "home", + "OutputFormat": "RSS", + "Suffix": "xml", + "Template Lookup Order": [ + "layouts/index.rss.xml", + "layouts/home.rss.xml", + "layouts/rss.xml", + "layouts/list.rss.xml", + "layouts/index.xml", + "layouts/home.xml", + "layouts/list.xml", + "layouts/_default/index.rss.xml", + "layouts/_default/home.rss.xml", + "layouts/_default/rss.xml", + "layouts/_default/list.rss.xml", + "layouts/_default/index.xml", + "layouts/_default/home.xml", + "layouts/_default/list.xml", + "layouts/_internal/_default/rss.xml" + ] + }, + { + "Example": "RSS section posts", + "Kind": "section", + "OutputFormat": "RSS", + "Suffix": "xml", + "Template Lookup Order": [ + "layouts/posts/section.rss.xml", + "layouts/posts/rss.xml", + "layouts/posts/list.rss.xml", + "layouts/posts/section.xml", + "layouts/posts/list.xml", + "layouts/section/section.rss.xml", + "layouts/section/rss.xml", + "layouts/section/list.rss.xml", + "layouts/section/section.xml", + "layouts/section/list.xml", + "layouts/_default/section.rss.xml", + "layouts/_default/rss.xml", + "layouts/_default/list.rss.xml", + "layouts/_default/section.xml", + "layouts/_default/list.xml", + "layouts/_internal/_default/rss.xml" + ] + }, + { + "Example": "Taxonomy in categories", + "Kind": "taxonomy", + "OutputFormat": "RSS", + "Suffix": "xml", + "Template Lookup Order": [ + "layouts/categories/category.terms.rss.xml", + "layouts/categories/terms.rss.xml", + "layouts/categories/taxonomy.rss.xml", + "layouts/categories/rss.xml", + "layouts/categories/list.rss.xml", + "layouts/categories/category.terms.xml", + "layouts/categories/terms.xml", + "layouts/categories/taxonomy.xml", + "layouts/categories/list.xml", + "layouts/category/category.terms.rss.xml", + "layouts/category/terms.rss.xml", + "layouts/category/taxonomy.rss.xml", + "layouts/category/rss.xml", + "layouts/category/list.rss.xml", + "layouts/category/category.terms.xml", + "layouts/category/terms.xml", + "layouts/category/taxonomy.xml", + "layouts/category/list.xml", + "layouts/taxonomy/category.terms.rss.xml", + "layouts/taxonomy/terms.rss.xml", + "layouts/taxonomy/taxonomy.rss.xml", + "layouts/taxonomy/rss.xml", + "layouts/taxonomy/list.rss.xml", + "layouts/taxonomy/category.terms.xml", + "layouts/taxonomy/terms.xml", + "layouts/taxonomy/taxonomy.xml", + "layouts/taxonomy/list.xml", + "layouts/_default/category.terms.rss.xml", + "layouts/_default/terms.rss.xml", + "layouts/_default/taxonomy.rss.xml", + "layouts/_default/rss.xml", + "layouts/_default/list.rss.xml", + "layouts/_default/category.terms.xml", + "layouts/_default/terms.xml", + "layouts/_default/taxonomy.xml", + "layouts/_default/list.xml", + "layouts/_internal/_default/rss.xml" + ] + }, + { + "Example": "Term in categories", + "Kind": "term", + "OutputFormat": "RSS", + "Suffix": "xml", + "Template Lookup Order": [ + "layouts/categories/term.rss.xml", + "layouts/categories/category.rss.xml", + "layouts/categories/taxonomy.rss.xml", + "layouts/categories/rss.xml", + "layouts/categories/list.rss.xml", + "layouts/categories/term.xml", + "layouts/categories/category.xml", + "layouts/categories/taxonomy.xml", + "layouts/categories/list.xml", + "layouts/term/term.rss.xml", + "layouts/term/category.rss.xml", + "layouts/term/taxonomy.rss.xml", + "layouts/term/rss.xml", + "layouts/term/list.rss.xml", + "layouts/term/term.xml", + "layouts/term/category.xml", + "layouts/term/taxonomy.xml", + "layouts/term/list.xml", + "layouts/taxonomy/term.rss.xml", + "layouts/taxonomy/category.rss.xml", + "layouts/taxonomy/taxonomy.rss.xml", + "layouts/taxonomy/rss.xml", + "layouts/taxonomy/list.rss.xml", + "layouts/taxonomy/term.xml", + "layouts/taxonomy/category.xml", + "layouts/taxonomy/taxonomy.xml", + "layouts/taxonomy/list.xml", + "layouts/category/term.rss.xml", + "layouts/category/category.rss.xml", + "layouts/category/taxonomy.rss.xml", + "layouts/category/rss.xml", + "layouts/category/list.rss.xml", + "layouts/category/term.xml", + "layouts/category/category.xml", + "layouts/category/taxonomy.xml", + "layouts/category/list.xml", + "layouts/_default/term.rss.xml", + "layouts/_default/category.rss.xml", + "layouts/_default/taxonomy.rss.xml", + "layouts/_default/rss.xml", + "layouts/_default/list.rss.xml", + "layouts/_default/term.xml", + "layouts/_default/category.xml", + "layouts/_default/taxonomy.xml", + "layouts/_default/list.xml", + "layouts/_internal/_default/rss.xml" + ] + }, + { + "Example": "Section list for \"posts\" section", + "Kind": "section", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/posts.html.html", + "layouts/posts/section.html.html", + "layouts/posts/list.html.html", + "layouts/posts/posts.html", + "layouts/posts/section.html", + "layouts/posts/list.html", + "layouts/section/posts.html.html", + "layouts/section/section.html.html", + "layouts/section/list.html.html", + "layouts/section/posts.html", + "layouts/section/section.html", + "layouts/section/list.html", + "layouts/_default/posts.html.html", + "layouts/_default/section.html.html", + "layouts/_default/list.html.html", + "layouts/_default/posts.html", + "layouts/_default/section.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Section list for \"posts\" section with type set to \"blog\"", + "Kind": "section", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/blog/posts.html.html", + "layouts/blog/section.html.html", + "layouts/blog/list.html.html", + "layouts/blog/posts.html", + "layouts/blog/section.html", + "layouts/blog/list.html", + "layouts/posts/posts.html.html", + "layouts/posts/section.html.html", + "layouts/posts/list.html.html", + "layouts/posts/posts.html", + "layouts/posts/section.html", + "layouts/posts/list.html", + "layouts/section/posts.html.html", + "layouts/section/section.html.html", + "layouts/section/list.html.html", + "layouts/section/posts.html", + "layouts/section/section.html", + "layouts/section/list.html", + "layouts/_default/posts.html.html", + "layouts/_default/section.html.html", + "layouts/_default/list.html.html", + "layouts/_default/posts.html", + "layouts/_default/section.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Section list for \"posts\" section with layout set to \"demoLayout\"", + "Kind": "section", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/posts/demolayout.html.html", + "layouts/posts/posts.html.html", + "layouts/posts/section.html.html", + "layouts/posts/list.html.html", + "layouts/posts/demolayout.html", + "layouts/posts/posts.html", + "layouts/posts/section.html", + "layouts/posts/list.html", + "layouts/section/demolayout.html.html", + "layouts/section/posts.html.html", + "layouts/section/section.html.html", + "layouts/section/list.html.html", + "layouts/section/demolayout.html", + "layouts/section/posts.html", + "layouts/section/section.html", + "layouts/section/list.html", + "layouts/_default/demolayout.html.html", + "layouts/_default/posts.html.html", + "layouts/_default/section.html.html", + "layouts/_default/list.html.html", + "layouts/_default/demolayout.html", + "layouts/_default/posts.html", + "layouts/_default/section.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Taxonomy list in categories", + "Kind": "taxonomy", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/categories/category.terms.html.html", + "layouts/categories/terms.html.html", + "layouts/categories/taxonomy.html.html", + "layouts/categories/list.html.html", + "layouts/categories/category.terms.html", + "layouts/categories/terms.html", + "layouts/categories/taxonomy.html", + "layouts/categories/list.html", + "layouts/category/category.terms.html.html", + "layouts/category/terms.html.html", + "layouts/category/taxonomy.html.html", + "layouts/category/list.html.html", + "layouts/category/category.terms.html", + "layouts/category/terms.html", + "layouts/category/taxonomy.html", + "layouts/category/list.html", + "layouts/taxonomy/category.terms.html.html", + "layouts/taxonomy/terms.html.html", + "layouts/taxonomy/taxonomy.html.html", + "layouts/taxonomy/list.html.html", + "layouts/taxonomy/category.terms.html", + "layouts/taxonomy/terms.html", + "layouts/taxonomy/taxonomy.html", + "layouts/taxonomy/list.html", + "layouts/_default/category.terms.html.html", + "layouts/_default/terms.html.html", + "layouts/_default/taxonomy.html.html", + "layouts/_default/list.html.html", + "layouts/_default/category.terms.html", + "layouts/_default/terms.html", + "layouts/_default/taxonomy.html", + "layouts/_default/list.html" + ] + }, + { + "Example": "Taxonomy term in categories", + "Kind": "term", + "OutputFormat": "HTML", + "Suffix": "html", + "Template Lookup Order": [ + "layouts/categories/term.html.html", + "layouts/categories/category.html.html", + "layouts/categories/taxonomy.html.html", + "layouts/categories/list.html.html", + "layouts/categories/term.html", + "layouts/categories/category.html", + "layouts/categories/taxonomy.html", + "layouts/categories/list.html", + "layouts/term/term.html.html", + "layouts/term/category.html.html", + "layouts/term/taxonomy.html.html", + "layouts/term/list.html.html", + "layouts/term/term.html", + "layouts/term/category.html", + "layouts/term/taxonomy.html", + "layouts/term/list.html", + "layouts/taxonomy/term.html.html", + "layouts/taxonomy/category.html.html", + "layouts/taxonomy/taxonomy.html.html", + "layouts/taxonomy/list.html.html", + "layouts/taxonomy/term.html", + "layouts/taxonomy/category.html", + "layouts/taxonomy/taxonomy.html", + "layouts/taxonomy/list.html", + "layouts/category/term.html.html", + "layouts/category/category.html.html", + "layouts/category/taxonomy.html.html", + "layouts/category/list.html.html", + "layouts/category/term.html", + "layouts/category/category.html", + "layouts/category/taxonomy.html", + "layouts/category/list.html", + "layouts/_default/term.html.html", + "layouts/_default/category.html.html", + "layouts/_default/taxonomy.html.html", + "layouts/_default/list.html.html", + "layouts/_default/term.html", + "layouts/_default/category.html", + "layouts/_default/taxonomy.html", + "layouts/_default/list.html" + ] + } + ] + }, + "tpl": { + "funcs": { + "cast": { + "ToFloat": { + "Description": "ToFloat converts the given value to a float.", + "Args": [ + "v" + ], + "Aliases": [ + "float" + ], + "Examples": [ + [ + "{{ \"1234\" | float | printf \"%T\" }}", + "float64" + ] + ] + }, + "ToInt": { + "Description": "ToInt converts the given value to an int.", + "Args": [ + "v" + ], + "Aliases": [ + "int" + ], + "Examples": [ + [ + "{{ \"1234\" | int | printf \"%T\" }}", + "int" + ] + ] + }, + "ToString": { + "Description": "ToString converts the given value to a string.", + "Args": [ + "v" + ], + "Aliases": [ + "string" + ], + "Examples": [ + [ + "{{ 1234 | string | printf \"%T\" }}", + "string" + ] + ] + } + }, + "compare": { + "Conditional": { + "Description": "Conditional can be used as a ternary operator.\nIt returns a if condition, else b.", + "Args": [ + "condition", + "a", + "b" + ], + "Aliases": [ + "cond" + ], + "Examples": [ + [ + "{{ cond (eq (add 2 2) 4) \"2+2 is 4\" \"what?\" | safeHTML }}", + "2+2 is 4" + ] + ] + }, + "Default": { + "Description": "Default checks whether a given value is set and returns a default value if it\nis not. \"Set\" in this context means non-zero for numeric types and times;\nnon-zero length for strings, arrays, slices, and maps;\nany boolean or struct value; or non-nil for any other types.", + "Args": [ + "dflt", + "given" + ], + "Aliases": [ + "default" + ], + "Examples": [ + [ + "{{ \"Hugo Rocks!\" | default \"Hugo Rules!\" }}", + "Hugo Rocks!" + ], + [ + "{{ \"\" | default \"Hugo Rules!\" }}", + "Hugo Rules!" + ] + ] + }, + "Eq": { + "Description": "Eq returns the boolean truth of arg1 == arg2 || arg1 == arg3 || arg1 == arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "eq" + ], + "Examples": [ + [ + "{{ if eq .Section \"blog\" }}current{{ end }}", + "current" + ] + ] + }, + "Ge": { + "Description": "Ge returns the boolean truth of arg1 \u003e= arg2 \u0026\u0026 arg1 \u003e= arg3 \u0026\u0026 arg1 \u003e= arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "ge" + ], + "Examples": [ + [ + "{{ if ge .Hugo.Version \"0.36\" }}Reasonable new Hugo version!{{ end }}", + "Reasonable new Hugo version!" + ] + ] + }, + "Gt": { + "Description": "Gt returns the boolean truth of arg1 \u003e arg2 \u0026\u0026 arg1 \u003e arg3 \u0026\u0026 arg1 \u003e arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "gt" + ], + "Examples": [] + }, + "Le": { + "Description": "Le returns the boolean truth of arg1 \u003c= arg2 \u0026\u0026 arg1 \u003c= arg3 \u0026\u0026 arg1 \u003c= arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "le" + ], + "Examples": [] + }, + "Lt": { + "Description": "Lt returns the boolean truth of arg1 \u003c arg2 \u0026\u0026 arg1 \u003c arg3 \u0026\u0026 arg1 \u003c arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "lt" + ], + "Examples": [] + }, + "Ne": { + "Description": "Ne returns the boolean truth of arg1 != arg2 \u0026\u0026 arg1 != arg3 \u0026\u0026 arg1 != arg4.", + "Args": [ + "first", + "others" + ], + "Aliases": [ + "ne" + ], + "Examples": [] + } + }, + "collections": { + "After": { + "Description": "After returns all the items after the first N in a rangeable list.", + "Args": [ + "index", + "seq" + ], + "Aliases": [ + "after" + ], + "Examples": [] + }, + "Append": { + "Description": "Append appends the arguments up to the last one to the slice in the last argument.\nThis construct allows template constructs like this:\n {{ $pages = $pages | append $p2 $p1 }}\nNote that with 2 arguments where both are slices of the same type,\nthe first slice will be appended to the second:\n {{ $pages = $pages | append .Site.RegularPages }}", + "Args": [ + "args" + ], + "Aliases": [ + "append" + ], + "Examples": [] + }, + "Apply": { + "Description": "Apply takes a map, array, or slice and returns a new slice with the function fname applied over it.", + "Args": [ + "seq", + "fname", + "args" + ], + "Aliases": [ + "apply" + ], + "Examples": [] + }, + "Complement": { + "Description": "Complement gives the elements in the last element of seqs that are not in\nany of the others.\nAll elements of seqs must be slices or arrays of comparable types.\n\nThe reasoning behind this rather clumsy API is so we can do this in the templates:\n {{ $c := .Pages | complement $last4 }}", + "Args": [ + "seqs" + ], + "Aliases": [ + "complement" + ], + "Examples": [ + [ + "{{ slice \"a\" \"b\" \"c\" \"d\" \"e\" \"f\" | complement (slice \"b\" \"c\") (slice \"d\" \"e\") }}", + "[a f]" + ] + ] + }, + "Delimit": { + "Description": "Delimit takes a given sequence and returns a delimited HTML string.\nIf last is passed to the function, it will be used as the final delimiter.", + "Args": [ + "seq", + "delimiter", + "last" + ], + "Aliases": [ + "delimit" + ], + "Examples": [ + [ + "{{ delimit (slice \"A\" \"B\" \"C\") \", \" \" and \" }}", + "A, B and C" + ] + ] + }, + "Dictionary": { + "Description": "Dictionary creates a map[string]interface{} from the given parameters by\nwalking the parameters and treating them as key-value pairs. The number\nof parameters must be even.\nThe keys can be string slices, which will create the needed nested structure.", + "Args": [ + "values" + ], + "Aliases": [ + "dict" + ], + "Examples": [] + }, + "EchoParam": { + "Description": "EchoParam returns a given value if it is set; otherwise, it returns an\nempty string.", + "Args": [ + "a", + "key" + ], + "Aliases": [ + "echoParam" + ], + "Examples": [ + [ + "{{ echoParam .Params \"langCode\" }}", + "en" + ] + ] + }, + "First": { + "Description": "First returns the first N items in a rangeable list.", + "Args": [ + "limit", + "seq" + ], + "Aliases": [ + "first" + ], + "Examples": [] + }, + "Group": { + "Description": "Group groups a set of elements by the given key.\nThis is currently only supported for Pages.", + "Args": [ + "key", + "items" + ], + "Aliases": [ + "group" + ], + "Examples": [] + }, + "In": { + "Description": "In returns whether v is in the set l. l may be an array or slice.", + "Args": [ + "l", + "v" + ], + "Aliases": [ + "in" + ], + "Examples": [ + [ + "{{ if in \"this string contains a substring\" \"substring\" }}Substring found!{{ end }}", + "Substring found!" + ] + ] + }, + "Index": { + "Description": "Index returns the result of indexing its first argument by the following\narguments. Thus \"index x 1 2 3\" is, in Go syntax, x[1][2][3]. Each\nindexed item must be a map, slice, or array.\n\nCopied from Go stdlib src/text/template/funcs.go.\n\nWe deviate from the stdlib due to https://github.com/golang/go/issues/14751.\n\nTODO(moorereason): merge upstream changes.", + "Args": [ + "item", + "args" + ], + "Aliases": [ + "index" + ], + "Examples": [] + }, + "Intersect": { + "Description": "Intersect returns the common elements in the given sets, l1 and l2. l1 and\nl2 must be of the same type and may be either arrays or slices.", + "Args": [ + "l1", + "l2" + ], + "Aliases": [ + "intersect" + ], + "Examples": [] + }, + "IsSet": { + "Description": "IsSet returns whether a given array, channel, slice, or map has a key\ndefined.", + "Args": [ + "a", + "key" + ], + "Aliases": [ + "isSet", + "isset" + ], + "Examples": [] + }, + "KeyVals": { + "Description": "KeyVals creates a key and values wrapper.", + "Args": [ + "key", + "vals" + ], + "Aliases": [ + "keyVals" + ], + "Examples": [ + [ + "{{ keyVals \"key\" \"a\" \"b\" }}", + "key: [a b]" + ] + ] + }, + "Last": { + "Description": "Last returns the last N items in a rangeable list.", + "Args": [ + "limit", + "seq" + ], + "Aliases": [ + "last" + ], + "Examples": [] + }, + "Merge": { + "Description": "Merge creates a copy of the final parameter and merges the preceding\nparameters into it in reverse order.\nCurrently only maps are supported. Key handling is case insensitive.", + "Args": [ + "params" + ], + "Aliases": [ + "merge" + ], + "Examples": [ + [ + "{{ dict \"title\" \"Hugo Rocks!\" | collections.Merge (dict \"title\" \"Default Title\" \"description\" \"Yes, Hugo Rocks!\") | sort }}", + "[Yes, Hugo Rocks! Hugo Rocks!]" + ], + [ + "{{ merge (dict \"title\" \"Default Title\" \"description\" \"Yes, Hugo Rocks!\") (dict \"title\" \"Hugo Rocks!\") | sort }}", + "[Yes, Hugo Rocks! Hugo Rocks!]" + ], + [ + "{{ merge (dict \"title\" \"Default Title\" \"description\" \"Yes, Hugo Rocks!\") (dict \"title\" \"Hugo Rocks!\") (dict \"extra\" \"For reals!\") | sort }}", + "[Yes, Hugo Rocks! For reals! Hugo Rocks!]" + ] + ] + }, + "NewScratch": { + "Description": "NewScratch creates a new Scratch which can be used to store values in a\nthread safe way.", + "Args": null, + "Aliases": [ + "newScratch" + ], + "Examples": [ + [ + "{{ $scratch := newScratch }}{{ $scratch.Add \"b\" 2 }}{{ $scratch.Add \"b\" 2 }}{{ $scratch.Get \"b\" }}", + "4" + ] + ] + }, + "Querify": { + "Description": "Querify encodes the given parameters in URL-encoded form (\"bar=baz\u0026foo=quux\") sorted by key.", + "Args": [ + "params" + ], + "Aliases": [ + "querify" + ], + "Examples": [ + [ + "{{ (querify \"foo\" 1 \"bar\" 2 \"baz\" \"with spaces\" \"qux\" \"this\u0026that=those\") | safeHTML }}", + "bar=2\u0026baz=with+spaces\u0026foo=1\u0026qux=this%26that%3Dthose" + ], + [ + "\u003ca href=\"https://www.google.com?{{ (querify \"q\" \"test\" \"page\" 3) | safeURL }}\"\u003eSearch\u003c/a\u003e", + "\u003ca href=\"https://www.google.com?page=3\u0026amp;q=test\"\u003eSearch\u003c/a\u003e" + ], + [ + "{{ slice \"foo\" 1 \"bar\" 2 | querify | safeHTML }}", + "bar=2\u0026foo=1" + ] + ] + }, + "Reverse": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Seq": { + "Description": "Seq creates a sequence of integers. It's named and used as GNU's seq.\n\nExamples:\n 3 =\u003e 1, 2, 3\n 1 2 4 =\u003e 1, 3\n -3 =\u003e -1, -2, -3\n 1 4 =\u003e 1, 2, 3, 4\n 1 -2 =\u003e 1, 0, -1, -2", + "Args": [ + "args" + ], + "Aliases": [ + "seq" + ], + "Examples": [ + [ + "{{ seq 3 }}", + "[1 2 3]" + ] + ] + }, + "Shuffle": { + "Description": "Shuffle returns the given rangeable list in a randomised order.", + "Args": [ + "seq" + ], + "Aliases": [ + "shuffle" + ], + "Examples": [] + }, + "Slice": { + "Description": "Slice returns a slice of all passed arguments.", + "Args": [ + "args" + ], + "Aliases": [ + "slice" + ], + "Examples": [ + [ + "{{ slice \"B\" \"C\" \"A\" | sort }}", + "[A B C]" + ] + ] + }, + "Sort": { + "Description": "Sort returns a sorted sequence.", + "Args": [ + "seq", + "args" + ], + "Aliases": [ + "sort" + ], + "Examples": [] + }, + "SymDiff": { + "Description": "SymDiff returns the symmetric difference of s1 and s2.\nArguments must be either a slice or an array of comparable types.", + "Args": [ + "s2", + "s1" + ], + "Aliases": [ + "symdiff" + ], + "Examples": [ + [ + "{{ slice 1 2 3 | symdiff (slice 3 4) }}", + "[1 2 4]" + ] + ] + }, + "Union": { + "Description": "Union returns the union of the given sets, l1 and l2. l1 and\nl2 must be of the same type and may be either arrays or slices.\nIf l1 and l2 aren't of the same type then l1 will be returned.\nIf either l1 or l2 is nil then the non-nil list will be returned.", + "Args": [ + "l1", + "l2" + ], + "Aliases": [ + "union" + ], + "Examples": [ + [ + "{{ union (slice 1 2 3) (slice 3 4 5) }}", + "[1 2 3 4 5]" + ] + ] + }, + "Uniq": { + "Description": "Uniq takes in a slice or array and returns a slice with subsequent\nduplicate elements removed.", + "Args": [ + "seq" + ], + "Aliases": [ + "uniq" + ], + "Examples": [ + [ + "{{ slice 1 2 3 2 | uniq }}", + "[1 2 3]" + ] + ] + }, + "Where": { + "Description": "Where returns a filtered subset of a given data type.", + "Args": [ + "seq", + "key", + "args" + ], + "Aliases": [ + "where" + ], + "Examples": [] + } + }, + "crypto": { + "HMAC": { + "Description": "HMAC returns a cryptographic hash that uses a key to sign a message.", + "Args": [ + "h", + "k", + "m" + ], + "Aliases": [ + "hmac" + ], + "Examples": [ + [ + "{{ hmac \"sha256\" \"Secret key\" \"Hello world, gophers!\" }}", + "b6d11b6c53830b9d87036272ca9fe9d19306b8f9d8aa07b15da27d89e6e34f40" + ] + ] + }, + "MD5": { + "Description": "MD5 hashes the given input and returns its MD5 checksum.", + "Args": [ + "in" + ], + "Aliases": [ + "md5" + ], + "Examples": [ + [ + "{{ md5 \"Hello world, gophers!\" }}", + "b3029f756f98f79e7f1b7f1d1f0dd53b" + ], + [ + "{{ crypto.MD5 \"Hello world, gophers!\" }}", + "b3029f756f98f79e7f1b7f1d1f0dd53b" + ] + ] + }, + "SHA1": { + "Description": "SHA1 hashes the given input and returns its SHA1 checksum.", + "Args": [ + "in" + ], + "Aliases": [ + "sha1" + ], + "Examples": [ + [ + "{{ sha1 \"Hello world, gophers!\" }}", + "c8b5b0e33d408246e30f53e32b8f7627a7a649d4" + ] + ] + }, + "SHA256": { + "Description": "SHA256 hashes the given input and returns its SHA256 checksum.", + "Args": [ + "in" + ], + "Aliases": [ + "sha256" + ], + "Examples": [ + [ + "{{ sha256 \"Hello world, gophers!\" }}", + "6ec43b78da9669f50e4e422575c54bf87536954ccd58280219c393f2ce352b46" + ] + ] + } + }, + "data": { + "GetCSV": { + "Description": "GetCSV expects a data separator and one or n-parts of a URL to a resource which\ncan either be a local or a remote one.\nThe data separator can be a comma, semi-colon, pipe, etc, but only one character.\nIf you provide multiple parts for the URL they will be joined together to the final URL.\nGetCSV returns nil or a slice slice to use in a short code.", + "Args": [ + "sep", + "args" + ], + "Aliases": [ + "getCSV" + ], + "Examples": [] + }, + "GetJSON": { + "Description": "GetJSON expects one or n-parts of a URL to a resource which can either be a local or a remote one.\nIf you provide multiple parts they will be joined together to the final URL.\nGetJSON returns nil or parsed JSON to use in a short code.", + "Args": [ + "args" + ], + "Aliases": [ + "getJSON" + ], + "Examples": [] + } + }, + "debug": { + "Dump": { + "Description": "Dump returns a object dump of val as a string.\nNote that not every value passed to Dump will print so nicely, but\nwe'll improve on that. We recommend using the \"go\" Chroma lexer to format the output\nnicely.\nAlso note that the output from Dump may change from Hugo version to the next,\nso don't depend on a specific output.", + "Args": [ + "val" + ], + "Aliases": null, + "Examples": [ + [ + "{{- $m := newScratch -}}\n{{- $m.Set \"Hugo\" \"Rocks!\" -}}\n{{- $m.Values | debug.Dump | safeHTML -}}", + "map[string]interface {}{\n \"Hugo\": \"Rocks!\",\n}" + ] + ] + } + }, + "encoding": { + "Base64Decode": { + "Description": "Base64Decode returns the base64 decoding of the given content.", + "Args": [ + "content" + ], + "Aliases": [ + "base64Decode" + ], + "Examples": [ + [ + "{{ \"SGVsbG8gd29ybGQ=\" | base64Decode }}", + "Hello world" + ], + [ + "{{ 42 | base64Encode | base64Decode }}", + "42" + ] + ] + }, + "Base64Encode": { + "Description": "Base64Encode returns the base64 encoding of the given content.", + "Args": [ + "content" + ], + "Aliases": [ + "base64Encode" + ], + "Examples": [ + [ + "{{ \"Hello world\" | base64Encode }}", + "SGVsbG8gd29ybGQ=" + ] + ] + }, + "Jsonify": { + "Description": "Jsonify encodes a given object to JSON. To pretty print the JSON, pass a map\nor dictionary of options as the first argument. Supported options are\n\"prefix\" and \"indent\". Each JSON element in the output will begin on a new\nline beginning with prefix followed by one or more copies of indent according\nto the indentation nesting.", + "Args": [ + "args" + ], + "Aliases": [ + "jsonify" + ], + "Examples": [ + [ + "{{ (slice \"A\" \"B\" \"C\") | jsonify }}", + "[\"A\",\"B\",\"C\"]" + ], + [ + "{{ (slice \"A\" \"B\" \"C\") | jsonify (dict \"indent\" \" \") }}", + "[\n \"A\",\n \"B\",\n \"C\"\n]" + ] + ] + } + }, + "fmt": { + "Errorf": { + "Description": "Errorf formats according to a format specifier and logs an ERROR.\nIt returns an empty string.", + "Args": [ + "format", + "a" + ], + "Aliases": [ + "errorf" + ], + "Examples": [ + [ + "{{ errorf \"%s.\" \"failed\" }}", + "" + ] + ] + }, + "Erroridf": { + "Description": "Erroridf formats according to a format specifier and logs an ERROR and\nan information text that the error with the given ID can be suppressed in config.\nIt returns an empty string.", + "Args": [ + "id", + "format", + "a" + ], + "Aliases": [ + "erroridf" + ], + "Examples": [ + [ + "{{ erroridf \"my-err-id\" \"%s.\" \"failed\" }}", + "" + ] + ] + }, + "Print": { + "Description": "Print returns string representation of the passed arguments.", + "Args": [ + "a" + ], + "Aliases": [ + "print" + ], + "Examples": [ + [ + "{{ print \"works!\" }}", + "works!" + ] + ] + }, + "Printf": { + "Description": "Printf returns a formatted string representation of the passed arguments.", + "Args": [ + "format", + "a" + ], + "Aliases": [ + "printf" + ], + "Examples": [ + [ + "{{ printf \"%s!\" \"works\" }}", + "works!" + ] + ] + }, + "Println": { + "Description": "Println returns string representation of the passed arguments ending with a newline.", + "Args": [ + "a" + ], + "Aliases": [ + "println" + ], + "Examples": [ + [ + "{{ println \"works!\" }}", + "works!\n" + ] + ] + }, + "Warnf": { + "Description": "Warnf formats according to a format specifier and logs a WARNING.\nIt returns an empty string.", + "Args": [ + "format", + "a" + ], + "Aliases": [ + "warnf" + ], + "Examples": [ + [ + "{{ warnf \"%s.\" \"warning\" }}", + "" + ] + ] + } + }, + "hugo": { + "Generator": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "IsExtended": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "IsProduction": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Version": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + } + }, + "images": { + "Brightness": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "ColorBalance": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Colorize": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Config": { + "Description": "Config returns the image.Config for the specified path relative to the\nworking directory.", + "Args": [ + "path" + ], + "Aliases": [ + "imageConfig" + ], + "Examples": [] + }, + "Contrast": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Filter": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Gamma": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "GaussianBlur": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Grayscale": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Hue": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Invert": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Overlay": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Pixelate": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Saturation": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Sepia": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Sigmoid": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "UnsharpMask": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + } + }, + "inflect": { + "Humanize": { + "Description": "Humanize returns the humanized form of a single parameter.\n\nIf the parameter is either an integer or a string containing an integer\nvalue, the behavior is to add the appropriate ordinal.\n\n Example: \"my-first-post\" -\u003e \"My first post\"\n Example: \"103\" -\u003e \"103rd\"\n Example: 52 -\u003e \"52nd\"", + "Args": [ + "in" + ], + "Aliases": [ + "humanize" + ], + "Examples": [ + [ + "{{ humanize \"my-first-post\" }}", + "My first post" + ], + [ + "{{ humanize \"myCamelPost\" }}", + "My camel post" + ], + [ + "{{ humanize \"52\" }}", + "52nd" + ], + [ + "{{ humanize 103 }}", + "103rd" + ] + ] + }, + "Pluralize": { + "Description": "Pluralize returns the plural form of a single word.", + "Args": [ + "in" + ], + "Aliases": [ + "pluralize" + ], + "Examples": [ + [ + "{{ \"cat\" | pluralize }}", + "cats" + ] + ] + }, + "Singularize": { + "Description": "Singularize returns the singular form of a single word.", + "Args": [ + "in" + ], + "Aliases": [ + "singularize" + ], + "Examples": [ + [ + "{{ \"cats\" | singularize }}", + "cat" + ] + ] + } + }, + "js": { + "Build": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + } + }, + "lang": { + "FormatAccounting": { + "Description": "FormatAccounting returns the currency reprecentation of number for the given currency and precision\nfor the current language in accounting notation.", + "Args": [ + "precision", + "currency", + "number" + ], + "Aliases": null, + "Examples": [ + [ + "{{ 512.5032 | lang.FormatAccounting 2 \"NOK\" }}", + "NOK512.50" + ] + ] + }, + "FormatCurrency": { + "Description": "FormatCurrency returns the currency reprecentation of number for the given currency and precision\nfor the current language.", + "Args": [ + "precision", + "currency", + "number" + ], + "Aliases": null, + "Examples": [ + [ + "{{ 512.5032 | lang.FormatCurrency 2 \"USD\" }}", + "$512.50" + ] + ] + }, + "FormatNumber": { + "Description": "FormatNumber formats number with the given precision for the current language.", + "Args": [ + "precision", + "number" + ], + "Aliases": null, + "Examples": [ + [ + "{{ 512.5032 | lang.FormatNumber 2 }}", + "512.50" + ] + ] + }, + "FormatNumberCustom": { + "Description": "FormatNumberCustom formats a number with the given precision using the\nnegative, decimal, and grouping options. The `options`\nparameter is a string consisting of `\u003cnegative\u003e \u003cdecimal\u003e \u003cgrouping\u003e`. The\ndefault `options` value is `- . ,`.\n\nNote that numbers are rounded up at 5 or greater.\nSo, with precision set to 0, 1.5 becomes `2`, and 1.4 becomes `1`.\n\nFor a simpler function that adapts to the current language, see FormatNumberCustom.", + "Args": [ + "precision", + "number", + "options" + ], + "Aliases": null, + "Examples": [ + [ + "{{ lang.FormatNumberCustom 2 12345.6789 }}", + "12,345.68" + ], + [ + "{{ lang.FormatNumberCustom 2 12345.6789 \"- , .\" }}", + "12.345,68" + ], + [ + "{{ lang.FormatNumberCustom 6 -12345.6789 \"- .\" }}", + "-12345.678900" + ], + [ + "{{ lang.FormatNumberCustom 0 -12345.6789 \"- . ,\" }}", + "-12,346" + ], + [ + "{{ -98765.4321 | lang.FormatNumberCustom 2 }}", + "-98,765.43" + ] + ] + }, + "FormatPercent": { - "Description": "FormatPercent formats number with the given precision for the current language.\nNote that the number is assumbed to be percent.", ++ "Description": "FormatPercent formats number with the given precision for the current language.\nNote that the number is assumed to be a percentage.", + "Args": [ + "precision", + "number" + ], + "Aliases": null, + "Examples": [ + [ + "{{ 512.5032 | lang.FormatPercent 2 }}", + "512.50%" + ] + ] + }, + "Merge": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "NumFmt": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Translate": { + "Description": "Translate returns a translated string for id.", + "Args": [ + "id", + "args" + ], + "Aliases": [ + "i18n", + "T" + ], + "Examples": [] + } + }, + "math": { + "Add": { + "Description": "Add adds two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "add" + ], + "Examples": [ + [ + "{{add 1 2}}", + "3" + ] + ] + }, + "Ceil": { + "Description": "Ceil returns the least integer value greater than or equal to x.", + "Args": [ + "x" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Ceil 2.1}}", + "3" + ] + ] + }, + "Div": { + "Description": "Div divides two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "div" + ], + "Examples": [ + [ + "{{div 6 3}}", + "2" + ] + ] + }, + "Floor": { + "Description": "Floor returns the greatest integer value less than or equal to x.", + "Args": [ + "x" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Floor 1.9}}", + "1" + ] + ] + }, + "Log": { + "Description": "Log returns the natural logarithm of a number.", + "Args": [ + "a" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Log 1}}", + "0" + ] + ] + }, + "Max": { + "Description": "Max returns the greater of two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Max 1 2 }}", + "2" + ] + ] + }, + "Min": { + "Description": "Min returns the smaller of two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Min 1 2 }}", + "1" + ] + ] + }, + "Mod": { + "Description": "Mod returns a % b.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "mod" + ], + "Examples": [ + [ + "{{mod 15 3}}", + "0" + ] + ] + }, + "ModBool": { + "Description": "ModBool returns the boolean of a % b. If a % b == 0, return true.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "modBool" + ], + "Examples": [ + [ + "{{modBool 15 3}}", + "true" + ] + ] + }, + "Mul": { + "Description": "Mul multiplies two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "mul" + ], + "Examples": [ + [ + "{{mul 2 3}}", + "6" + ] + ] + }, + "Pow": { + "Description": "Pow returns a raised to the power of b.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "pow" + ], + "Examples": [ + [ + "{{math.Pow 2 3}}", + "8" + ] + ] + }, + "Round": { + "Description": "Round returns the nearest integer, rounding half away from zero.", + "Args": [ + "x" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Round 1.5}}", + "2" + ] + ] + }, + "Sqrt": { + "Description": "Sqrt returns the square root of a number.", + "Args": [ + "a" + ], + "Aliases": null, + "Examples": [ + [ + "{{math.Sqrt 81}}", + "9" + ] + ] + }, + "Sub": { + "Description": "Sub subtracts two numbers.", + "Args": [ + "a", + "b" + ], + "Aliases": [ + "sub" + ], + "Examples": [ + [ + "{{sub 3 2}}", + "1" + ] + ] + } + }, + "openapi3": { + "Unmarshal": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": [] + } + }, + "os": { + "FileExists": { + "Description": "FileExists checks whether a file exists under the given path.", + "Args": [ + "i" + ], + "Aliases": [ + "fileExists" + ], + "Examples": [ + [ + "{{ fileExists \"foo.txt\" }}", + "false" + ] + ] + }, + "Getenv": { + "Description": "Getenv retrieves the value of the environment variable named by the key.\nIt returns the value, which will be empty if the variable is not present.", + "Args": [ + "key" + ], + "Aliases": [ + "getenv" + ], + "Examples": [] + }, + "ReadDir": { + "Description": "ReadDir lists the directory contents relative to the configured WorkingDir.", + "Args": [ + "i" + ], + "Aliases": [ + "readDir" + ], + "Examples": [ + [ + "{{ range (readDir \"files\") }}{{ .Name }}{{ end }}", + "README.txt" + ] + ] + }, + "ReadFile": { + "Description": "ReadFile reads the file named by filename relative to the configured WorkingDir.\nIt returns the contents as a string.\nThere is an upper size limit set at 1 megabytes.", + "Args": [ + "i" + ], + "Aliases": [ + "readFile" + ], + "Examples": [ + [ + "{{ readFile \"files/README.txt\" }}", + "Hugo Rocks!" + ] + ] + }, + "Stat": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + } + }, + "partials": { + "Include": { + "Description": "Include executes the named partial.\nIf the partial contains a return statement, that value will be returned.\nElse, the rendered output will be returned:\nA string if the partial is a text/template, or template.HTML when html/template.", + "Args": [ + "name", + "contextList" + ], + "Aliases": [ + "partial" + ], + "Examples": [ + [ + "{{ partial \"header.html\" . }}", + "\u003ctitle\u003eHugo Rocks!\u003c/title\u003e" + ] + ] + }, + "IncludeCached": { + "Description": "IncludeCached executes and caches partial templates. The cache is created with name+variants as the key.", + "Args": [ + "name", + "context", + "variants" + ], + "Aliases": [ + "partialCached" + ], + "Examples": [] + } + }, + "path": { + "Base": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Dir": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Ext": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "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" + ], + [ + "{{ \"my/path/filename.txt\" | path.Ext }}", + ".txt" + ], + [ + "{{ \"my/path/filename.txt\" | path.Base }}", + "filename.txt" + ], + [ + "{{ \"my/path/filename.txt\" | path.Dir }}", + "my/path" + ] + ] + }, + "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" + ] + ] + } + }, + "reflect": { + "IsMap": { + "Description": "IsMap reports whether v is a map.", + "Args": [ + "v" + ], + "Aliases": null, + "Examples": [ + [ + "{{ if reflect.IsMap (dict \"a\" 1) }}Map{{ end }}", + "Map" + ] + ] + }, + "IsSlice": { + "Description": "IsSlice reports whether v is a slice.", + "Args": [ + "v" + ], + "Aliases": null, + "Examples": [ + [ + "{{ if reflect.IsSlice (slice 1 2 3) }}Slice{{ end }}", + "Slice" + ] + ] + } + }, + "resources": { + "Babel": { + "Description": "Babel processes the given Resource with Babel.", + "Args": [ + "args" + ], + "Aliases": [ + "babel" + ], + "Examples": [] + }, + "Concat": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "ExecuteAsTemplate": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Fingerprint": { + "Description": "Fingerprint transforms the given Resource with a MD5 hash of the content in\nthe RelPermalink and Permalink.", + "Args": [ + "args" + ], + "Aliases": [ + "fingerprint" + ], + "Examples": [] + }, + "FromString": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Get": { + "Description": "Get locates the filename given in Hugo's assets filesystem\nand creates a Resource object that can be used for further transformations.", + "Args": [ + "filename" + ], + "Aliases": null, + "Examples": [] + }, + "GetMatch": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Match": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Minify": { + "Description": "Minify minifies the given Resource using the MediaType to pick the correct\nminifier.", + "Args": [ + "r" + ], + "Aliases": [ + "minify" + ], + "Examples": [] + }, + "PostCSS": { + "Description": "PostCSS processes the given Resource with PostCSS", + "Args": [ + "args" + ], + "Aliases": [ + "postCSS" + ], + "Examples": [] + }, + "PostProcess": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "ToCSS": { + "Description": "ToCSS converts the given Resource to CSS. You can optional provide an Options\nobject or a target path (string) as first argument.", + "Args": [ + "args" + ], + "Aliases": [ + "toCSS" + ], + "Examples": [] + } + }, + "safe": { + "CSS": { + "Description": "CSS returns a given string as html/template CSS content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeCSS" + ], + "Examples": [ + [ + "{{ \"Bat\u0026Man\" | safeCSS | safeCSS }}", + "Bat\u0026amp;Man" + ] + ] + }, + "HTML": { + "Description": "HTML returns a given string as html/template HTML content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeHTML" + ], + "Examples": [ + [ + "{{ \"Bat\u0026Man\" | safeHTML | safeHTML }}", + "Bat\u0026Man" + ], + [ + "{{ \"Bat\u0026Man\" | safeHTML }}", + "Bat\u0026Man" + ] + ] + }, + "HTMLAttr": { + "Description": "HTMLAttr returns a given string as html/template HTMLAttr content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeHTMLAttr" + ], + "Examples": [] + }, + "JS": { + "Description": "JS returns the given string as a html/template JS content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeJS" + ], + "Examples": [ + [ + "{{ \"(1*2)\" | safeJS | safeJS }}", + "(1*2)" + ] + ] + }, + "JSStr": { + "Description": "JSStr returns the given string as a html/template JSStr content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeJSStr" + ], + "Examples": [] + }, + "SanitizeURL": { + "Description": "SanitizeURL returns a given string as html/template URL content.", + "Args": [ + "a" + ], + "Aliases": [ + "sanitizeURL", + "sanitizeurl" + ], + "Examples": [] + }, + "URL": { + "Description": "URL returns a given string as html/template URL content.", + "Args": [ + "a" + ], + "Aliases": [ + "safeURL" + ], + "Examples": [ + [ + "{{ \"http://gohugo.io\" | safeURL | safeURL }}", + "http://gohugo.io" + ] + ] + } + }, + "site": { + "BaseURL": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Data": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Hugo": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "IsServer": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Language": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "LastChange": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Menus": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Pages": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Params": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "RegularPages": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "ServerPort": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Sites": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Taxonomies": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Title": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + } + }, + "strings": { + "Chomp": { + "Description": "Chomp returns a copy of s with all trailing newline characters removed.", + "Args": [ + "s" + ], + "Aliases": [ + "chomp" + ], + "Examples": [ + [ + "{{chomp \"\u003cp\u003eBlockhead\u003c/p\u003e\\n\" | safeHTML }}", + "\u003cp\u003eBlockhead\u003c/p\u003e" + ] + ] + }, + "Contains": { + "Description": "Contains reports whether substr is in s.", + "Args": [ + "s", + "substr" + ], + "Aliases": null, + "Examples": [ + [ + "{{ strings.Contains \"abc\" \"b\" }}", + "true" + ], + [ + "{{ strings.Contains \"abc\" \"d\" }}", + "false" + ] + ] + }, + "ContainsAny": { + "Description": "ContainsAny reports whether any Unicode code points in chars are within s.", + "Args": [ + "s", + "chars" + ], + "Aliases": null, + "Examples": [ + [ + "{{ strings.ContainsAny \"abc\" \"bcd\" }}", + "true" + ], + [ + "{{ strings.ContainsAny \"abc\" \"def\" }}", + "false" + ] + ] + }, + "Count": { + "Description": "Count counts the number of non-overlapping instances of substr in s.\nIf substr is an empty string, Count returns 1 + the number of Unicode code points in s.", + "Args": [ + "substr", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{\"aabab\" | strings.Count \"a\" }}", + "3" + ] + ] + }, + "CountRunes": { + "Description": "CountRunes returns the number of runes in s, excluding whitespace.", + "Args": [ + "s" + ], + "Aliases": [ + "countrunes" + ], + "Examples": [] + }, + "CountWords": { + "Description": "CountWords returns the approximate word count in s.", + "Args": [ + "s" + ], + "Aliases": [ + "countwords" + ], + "Examples": [] + }, + "FindRE": { + "Description": "FindRE returns a list of strings that match the regular expression. By default all matches\nwill be included. The number of matches can be limited with an optional third parameter.", + "Args": [ + "expr", + "content", + "limit" + ], + "Aliases": [ + "findRE" + ], + "Examples": [ + [ + "{{ findRE \"[G|g]o\" \"Hugo is a static side generator written in Go.\" \"1\" }}", + "[go]" + ] + ] + }, + "FirstUpper": { + "Description": "FirstUpper returns a string with the first character as upper case.", + "Args": [ + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"hugo rocks!\" | strings.FirstUpper }}", + "Hugo rocks!" + ] + ] + }, + "HasPrefix": { + "Description": "HasPrefix tests whether the input s begins with prefix.", + "Args": [ + "s", + "prefix" + ], + "Aliases": [ + "hasPrefix" + ], + "Examples": [ + [ + "{{ hasPrefix \"Hugo\" \"Hu\" }}", + "true" + ], + [ + "{{ hasPrefix \"Hugo\" \"Fu\" }}", + "false" + ] + ] + }, + "HasSuffix": { + "Description": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Repeat": { + "Description": "Repeat returns a new string consisting of count copies of the string s.", + "Args": [ + "n", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"yo\" | strings.Repeat 4 }}", + "yoyoyoyo" + ] + ] + }, + "Replace": { + "Description": "Replace returns a copy of the string s with all occurrences of old replaced\nwith new. The number of replacements can be limited with an optional fourth\nparameter.", + "Args": [ + "s", + "old", + "new", + "limit" + ], + "Aliases": [ + "replace" + ], + "Examples": [ + [ + "{{ replace \"Batman and Robin\" \"Robin\" \"Catwoman\" }}", + "Batman and Catwoman" + ], + [ + "{{ replace \"aabbaabb\" \"a\" \"z\" 2 }}", + "zzbbaabb" + ] + ] + }, + "ReplaceRE": { + "Description": "ReplaceRE returns a copy of s, replacing all matches of the regular\nexpression pattern with the replacement text repl. The number of replacements\ncan be limited with an optional fourth parameter.", + "Args": [ + "pattern", + "repl", + "s", + "n" + ], + "Aliases": [ + "replaceRE" + ], + "Examples": [ + [ + "{{ replaceRE \"a+b\" \"X\" \"aabbaabbab\" }}", + "XbXbX" + ], + [ + "{{ replaceRE \"a+b\" \"X\" \"aabbaabbab\" 1 }}", + "Xbaabbab" + ] + ] + }, + "RuneCount": { + "Description": "RuneCount returns the number of runes in s.", + "Args": [ + "s" + ], + "Aliases": null, + "Examples": [] + }, + "SliceString": { + "Description": "SliceString slices a string by specifying a half-open range with\ntwo indices, start and end. 1 and 4 creates a slice including elements 1 through 3.\nThe end index can be omitted, it defaults to the string's length.", + "Args": [ + "a", + "startEnd" + ], + "Aliases": [ + "slicestr" + ], + "Examples": [ + [ + "{{slicestr \"BatMan\" 0 3}}", + "Bat" + ], + [ + "{{slicestr \"BatMan\" 3}}", + "Man" + ] + ] + }, + "Split": { + "Description": "Split slices an input string into all substrings separated by delimiter.", + "Args": [ + "a", + "delimiter" + ], + "Aliases": [ + "split" + ], + "Examples": [] + }, + "Substr": { + "Description": "Substr extracts parts of a string, beginning at the character at the specified\nposition, and returns the specified number of characters.\n\nIt normally takes two parameters: start and length.\nIt can also take one parameter: start, i.e. length is omitted, in which case\nthe substring starting from start until the end of the string will be returned.\n\nTo extract characters from the end of the string, use a negative start number.\n\nIn addition, borrowing from the extended behavior described at http://php.net/substr,\nif length is given and is negative, then that many characters will be omitted from\nthe end of string.", + "Args": [ + "a", + "nums" + ], + "Aliases": [ + "substr" + ], + "Examples": [ + [ + "{{substr \"BatMan\" 0 -3}}", + "Bat" + ], + [ + "{{substr \"BatMan\" 3 3}}", + "Man" + ] + ] + }, + "Title": { + "Description": "Title returns a copy of the input s with all Unicode letters that begin words\nmapped to their title case.", + "Args": [ + "s" + ], + "Aliases": [ + "title" + ], + "Examples": [ + [ + "{{title \"Bat man\"}}", + "Bat Man" + ], + [ + "{{title \"somewhere over the rainbow\"}}", + "Somewhere Over the Rainbow" + ] + ] + }, + "ToLower": { + "Description": "ToLower returns a copy of the input s with all Unicode letters mapped to their\nlower case.", + "Args": [ + "s" + ], + "Aliases": [ + "lower" + ], + "Examples": [ + [ + "{{lower \"BatMan\"}}", + "batman" + ] + ] + }, + "ToUpper": { + "Description": "ToUpper returns a copy of the input s with all Unicode letters mapped to their\nupper case.", + "Args": [ + "s" + ], + "Aliases": [ + "upper" + ], + "Examples": [ + [ + "{{upper \"BatMan\"}}", + "BATMAN" + ] + ] + }, + "Trim": { + "Description": "Trim returns a string with all leading and trailing characters defined\ncontained in cutset removed.", + "Args": [ + "s", + "cutset" + ], + "Aliases": [ + "trim" + ], + "Examples": [ + [ + "{{ trim \"++Batman--\" \"+-\" }}", + "Batman" + ] + ] + }, + "TrimLeft": { + "Description": "TrimLeft returns a slice of the string s with all leading characters\ncontained in cutset removed.", + "Args": [ + "cutset", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"aabbaa\" | strings.TrimLeft \"a\" }}", + "bbaa" + ] + ] + }, + "TrimPrefix": { + "Description": "TrimPrefix returns s without the provided leading prefix string. If s doesn't\nstart with prefix, s is returned unchanged.", + "Args": [ + "prefix", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"aabbaa\" | strings.TrimPrefix \"a\" }}", + "abbaa" + ], + [ + "{{ \"aabbaa\" | strings.TrimPrefix \"aa\" }}", + "bbaa" + ] + ] + }, + "TrimRight": { + "Description": "TrimRight returns a slice of the string s with all trailing characters\ncontained in cutset removed.", + "Args": [ + "cutset", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"aabbaa\" | strings.TrimRight \"a\" }}", + "aabb" + ] + ] + }, + "TrimSuffix": { + "Description": "TrimSuffix returns s without the provided trailing suffix string. If s\ndoesn't end with suffix, s is returned unchanged.", + "Args": [ + "suffix", + "s" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"aabbaa\" | strings.TrimSuffix \"a\" }}", + "aabba" + ], + [ + "{{ \"aabbaa\" | strings.TrimSuffix \"aa\" }}", + "aabb" + ] + ] + }, + "Truncate": { + "Description": "Truncate truncates a given string to the specified length.", + "Args": [ + "a", + "options" + ], + "Aliases": [ + "truncate" + ], + "Examples": [ + [ + "{{ \"this is a very long text\" | truncate 10 \" ...\" }}", + "this is a ..." + ], + [ + "{{ \"With [Markdown](/markdown) inside.\" | markdownify | truncate 14 }}", + "With \u003ca href=\"/markdown\"\u003eMarkdown …\u003c/a\u003e" + ] + ] + } + }, + "templates": { + "Exists": { + "Description": "Exists returns whether the template with the given name exists.\nNote that this is the Unix-styled relative path including filename suffix,\ne.g. partials/header.html", + "Args": [ + "name" + ], + "Aliases": null, + "Examples": [ + [ + "{{ if (templates.Exists \"partials/header.html\") }}Yes!{{ end }}", + "Yes!" + ], + [ + "{{ if not (templates.Exists \"partials/doesnotexist.html\") }}No!{{ end }}", + "No!" + ] + ] + } + }, + "time": { + "AsTime": { + "Description": "AsTime converts the textual representation of the datetime string into\na time.Time interface.", + "Args": [ + "v", + "args" + ], + "Aliases": null, + "Examples": [ + [ + "{{ (time \"2015-01-21\").Year }}", + "2015" + ] + ] + }, + "Duration": { + "Description": "Duration converts the given number to a time.Duration.\nUnit is one of nanosecond/ns, microsecond/us/µs, millisecond/ms, second/s, minute/m or hour/h.", + "Args": [ + "unit", + "number" + ], + "Aliases": [ + "duration" + ], + "Examples": [ + [ + "{{ mul 60 60 | duration \"second\" }}", + "1h0m0s" + ] + ] + }, + "Format": { + "Description": "Format converts the textual representation of the datetime string into\nthe other form or returns it of the time.Time value. These are formatted\nwith the layout string", + "Args": [ + "layout", + "v" + ], + "Aliases": [ + "dateFormat" + ], + "Examples": [ + [ + "dateFormat: {{ dateFormat \"Monday, Jan 2, 2006\" \"2015-01-21\" }}", + "dateFormat: Wednesday, Jan 21, 2015" + ] + ] + }, + "Now": { + "Description": "Now returns the current local time.", + "Args": null, + "Aliases": [ + "now" + ], + "Examples": [] + }, + "ParseDuration": { + "Description": "ParseDuration parses a duration string.\nA duration string is a possibly signed sequence of\ndecimal numbers, each with optional fraction and a unit suffix,\nsuch as \"300ms\", \"-1.5h\" or \"2h45m\".\nValid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".\nSee https://golang.org/pkg/time/#ParseDuration", + "Args": [ + "in" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"1h12m10s\" | time.ParseDuration }}", + "1h12m10s" + ] + ] + } + }, + "transform": { + "Emojify": { + "Description": "Emojify returns a copy of s with all emoji codes replaced with actual emojis.\n\nSee http://www.emoji-cheat-sheet.com/", + "Args": [ + "s" + ], + "Aliases": [ + "emojify" + ], + "Examples": [ + [ + "{{ \"I :heart: Hugo\" | emojify }}", + "I ❤️ Hugo" + ] + ] + }, + "HTMLEscape": { + "Description": "HTMLEscape returns a copy of s with reserved HTML characters escaped.", + "Args": [ + "s" + ], + "Aliases": [ + "htmlEscape" + ], + "Examples": [ + [ + "{{ htmlEscape \"Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e\" | safeHTML}}", + "Cathal Garvey \u0026amp; The Sunshine Band \u0026lt;cathal@foo.bar\u0026gt;" + ], + [ + "{{ htmlEscape \"Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e\"}}", + "Cathal Garvey \u0026amp;amp; The Sunshine Band \u0026amp;lt;cathal@foo.bar\u0026amp;gt;" + ], + [ + "{{ htmlEscape \"Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e\" | htmlUnescape | safeHTML }}", + "Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e" + ] + ] + }, + "HTMLUnescape": { + "Description": "HTMLUnescape returns a copy of with HTML escape requences converted to plain\ntext.", + "Args": [ + "s" + ], + "Aliases": [ + "htmlUnescape" + ], + "Examples": [ + [ + "{{ htmlUnescape \"Cathal Garvey \u0026amp; The Sunshine Band \u0026lt;cathal@foo.bar\u0026gt;\" | safeHTML}}", + "Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e" + ], + [ + "{{\"Cathal Garvey \u0026amp;amp; The Sunshine Band \u0026amp;lt;cathal@foo.bar\u0026amp;gt;\" | htmlUnescape | htmlUnescape | safeHTML}}", + "Cathal Garvey \u0026 The Sunshine Band \u003ccathal@foo.bar\u003e" + ], + [ + "{{\"Cathal Garvey \u0026amp;amp; The Sunshine Band \u0026amp;lt;cathal@foo.bar\u0026amp;gt;\" | htmlUnescape | htmlUnescape }}", + "Cathal Garvey \u0026amp; The Sunshine Band \u0026lt;cathal@foo.bar\u0026gt;" + ], + [ + "{{ htmlUnescape \"Cathal Garvey \u0026amp; The Sunshine Band \u0026lt;cathal@foo.bar\u0026gt;\" | htmlEscape | safeHTML }}", + "Cathal Garvey \u0026amp; The Sunshine Band \u0026lt;cathal@foo.bar\u0026gt;" + ] + ] + }, + "Highlight": { + "Description": "Highlight returns a copy of s as an HTML string with syntax\nhighlighting applied.", + "Args": [ + "s", + "lang", + "opts" + ], + "Aliases": [ + "highlight" + ], + "Examples": [] + }, + "Markdownify": { + "Description": "Markdownify renders a given input from Markdown to HTML.", + "Args": [ + "s" + ], + "Aliases": [ + "markdownify" + ], + "Examples": [ + [ + "{{ .Title | markdownify}}", + "\u003cstrong\u003eBatMan\u003c/strong\u003e" + ] + ] + }, + "Plainify": { + "Description": "Plainify returns a copy of s with all HTML tags removed.", + "Args": [ + "s" + ], + "Aliases": [ + "plainify" + ], + "Examples": [ + [ + "{{ plainify \"Hello \u003cstrong\u003eworld\u003c/strong\u003e, gophers!\" }}", + "Hello world, gophers!" + ] + ] + }, + "Remarshal": { + "Description": "Remarshal is used in the Hugo documentation to convert configuration\nexamples from YAML to JSON, TOML (and possibly the other way around).\nThe is primarily a helper for the Hugo docs site.\nIt is not a general purpose YAML to TOML converter etc., and may\nchange without notice if it serves a purpose in the docs.\nFormat is one of json, yaml or toml.", + "Args": [ + "format", + "data" + ], + "Aliases": null, + "Examples": [ + [ + "{{ \"title = \\\"Hello World\\\"\" | transform.Remarshal \"json\" | safeHTML }}", + "{\n \"title\": \"Hello World\"\n}\n" + ] + ] + }, + "Unmarshal": { + "Description": "Unmarshal unmarshals the data given, which can be either a string, json.RawMessage\nor a Resource. Supported formats are JSON, TOML, YAML, and CSV.\nYou can optionally provide an options map as the first argument.", + "Args": [ + "args" + ], + "Aliases": [ + "unmarshal" + ], + "Examples": [ + [ + "{{ \"hello = \\\"Hello World\\\"\" | transform.Unmarshal }}", + "map[hello:Hello World]" + ], + [ + "{{ \"hello = \\\"Hello World\\\"\" | resources.FromString \"data/greetings.toml\" | transform.Unmarshal }}", + "map[hello:Hello World]" + ] + ] + } + }, + "urls": { + "AbsLangURL": { + "Description": "AbsLangURL takes a given string and converts it to an absolute URL according\nto a page's position in the project directory structure and the current\nlanguage.", + "Args": [ + "a" + ], + "Aliases": [ + "absLangURL" + ], + "Examples": [] + }, + "AbsURL": { + "Description": "AbsURL takes a given string and converts it to an absolute URL.", + "Args": [ + "a" + ], + "Aliases": [ + "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": "", + "Args": null, + "Aliases": null, + "Examples": null + }, + "Ref": { + "Description": "Ref returns the absolute URL path to a given content item.", + "Args": [ + "in", + "args" + ], + "Aliases": [ + "ref" + ], + "Examples": [] + }, + "RelLangURL": { + "Description": "RelLangURL takes a given string and prepends the relative path according to a\npage's position in the project directory structure and the current language.", + "Args": [ + "a" + ], + "Aliases": [ + "relLangURL" + ], + "Examples": [] + }, + "RelRef": { + "Description": "RelRef returns the relative URL path to a given content item.", + "Args": [ + "in", + "args" + ], + "Aliases": [ + "relref" + ], + "Examples": [] + }, + "RelURL": { + "Description": "RelURL takes a given string and prepends the relative path according to a\npage's position in the project directory structure.", + "Args": [ + "a" + ], + "Aliases": [ + "relURL" + ], + "Examples": [] + }, + "URLize": { + "Description": "URLize returns the given argument formatted as URL.", + "Args": [ + "a" + ], + "Aliases": [ + "urlize" + ], + "Examples": [] + } + } + } + } +} diff --cc docs/data/homepagetweets.toml index f5a2b5db,00000000..cde241f0 mode 100644,000000..100644 --- a/docs/data/homepagetweets.toml +++ b/docs/data/homepagetweets.toml @@@ -1,279 -1,0 +1,265 @@@ +[[tweet]] +name = "Heinrich Hartmann" +twitter_handle = "@heinrichhartman" +quote = "Working with @GoHugoIO is such a joy. Having worked with #Jekyll in the past, the near instant preview is a big win! Did not expect this to make such a huge difference." +link = "https://twitter.com/heinrichhartman/status/1199736512264462341" +date = 2019-11-12T00:00:00Z + +[[tweet]] +name = "Joshua Steven‏‏" +twitter_handle = "@jscarto" +quote = "Can't overstate how much I enjoy @GoHugoIO. My site is relatively small, but *18 ms* to build the whole thing made template development and proofing a breeze." +link = "https://twitter.com/jscarto/status/1039648827815485440" +date = 2018-09-12T00:00:00Z + - [[tweet]] - name = "Jens Munch" - twitter_handle = "@jensamunch" - quote = "Hugo is really, really incredible... Now does resizing/resampling of images as well! Crazy that something so fast can be a static site generator... Amazing open-source project." - link = "https://twitter.com/jensamunch/status/948533063537086464" - date = 2018-01-03T04:00:00Z - - [[tweet]] - name = "STOQE" - twitter_handle = "@STOQE" - quote = "I fear @GoHugoIO v0.22 might be so fast it creates a code vortex that time-warps me back to a time I used Wordpress. #gasp" - link = "https://twitter.com/STOQE/status/874184881701494784" - date = 2017-06-12T00:00:00Z - +[[tweet]] +name = "Christophe Diericx" +twitter_handle = "@spcrngr_" +quote = "The more I use gohugo.io, the more I really like it. Super intuitive/powerful static site generator...great job @GoHugoIO" +link = "https://twitter.com/spcrngr_/status/870863020905435136" +date = 2017-06-03T00:00:00Z + +[[tweet]] +name = "marcoscan" +twitter_handle = "@marcoscan" +quote = "Blog migrated from @WordPress to @GoHugoIO, with a little refresh of my theme, Vim shortcuts and a full featured deploy script #gohugo" +link = "https://twitter.com/marcoscan/status/869661175960752129" +date = 2017-05-30T00:00:00Z + +[[tweet]] +name = "Sandra Kuipers" +twitter_handle = "@SKuipersDesign" +quote = "Who knew static site building could be fun 🤔 Learning #gohugo today" +link = "https://twitter.com/SKuipersDesign/status/868796256902029312" +date = 2017-05-28T00:00:00Z + +[[tweet]] +name = "Netlify" +twitter_handle = "@Netlify" +quote = "Top Ten Static Site Generators of 2017. Congrats to the top 3: 1. @Jekyllrb 2. @GoHugoIO 3. @hexojs" +link = "https://twitter.com/Netlify/status/868122279221362688" +date = 2017-05-26T00:00:00Z + +[[tweet]] +name = "Phil Hawksworth" +twitter_handle = "@philhawksworth" +quote = "I've been keen on #JAMStack for some time, but @GoHugoIO is wooing me all over again. Great fun to build with. And speeeeedy." +link = "https://twitter.com/philhawksworth/status/866684170512326657" +date = 2017-05-22T00:00:00Z + +[[tweet]] +name = "Aras Pranckevicius" +twitter_handle = "@aras_p" +quote = "I've probably said it before...but having Hugo rebuild the whole website in 300ms is amazing. gohugo.io, #gohugo" +link = "https://twitter.com/aras_p/status/861157286823288832" +date = 2017-05-07T00:00:00Z + +[[tweet]] +name = "Hans Beck" +twitter_handle = "@EnrichedGamesHB" +quote = "Diving deeper into @GoHugoIO. A lot of docs there, top work! But I've the impressed that #gohugo is far easier than its feels from the docs!" +link = "https://twitter.com/EnrichedGamesHB/status/836854762440130560" +date = 2017-03-01T00:00:00Z + +[[tweet]] +name = "Alan Richardson" +twitter_handle = "@eviltester" +quote = "I migrated the @BlackOpsTesting .com website from docpad to Hugo last weekend. http://gohugo.io/ Super Fast HTML Generation @spf13 " +link = "https://twitter.com/eviltester/status/553520335115808768" +date = 2015-01-09T00:00:00Z + +[[tweet]] +name = "Janez Čadež‏" +twitter_handle = "@jamziSLO" +quote = "Building @garazaFRI website in #hugo. This static site generator is soooo damn fast! #gohugo #golang" +link = "https://twitter.com/jamziSLO/status/817720283977183234" +date = 2017-01-07T00:00:00Z + +[[tweet]] +name = "Execute‏‏" +twitter_handle = "@executerun" +quote = "Hah, #gohugo. I was working with #gohugo on #linux but now I realised how easy is to set-up it on #windows. Just need to add binary to #path!" +link = "https://twitter.com/executerun/status/809753145270272005" +date = 2016-12-16T00:00:00Z + +[[tweet]] +name = "Baron Schwartz" +twitter_handle = "@xaprb" +quote = "Hugo is impressively capable. It's a static site generator by @spf13 written in #golang . Just upgraded to latest release; very powerful. " +link = "https://twitter.com/xaprb/status/556894866488455169" +date = 2015-01-18T00:00:00Z + +[[tweet]] +name = "Dave Cottlehuber" +twitter_handle = "@dch__" +quote = "I just fell in love with #hugo, a static site/blog engine written by @spf13 in #golang + stellar docs" +link = "https://twitter.com/dch__/status/460158115498176512" +date = 2014-04-26T00:00:00Z + +[[tweet]] +name = "David Caunt" +twitter_handle = "@dcaunt" +quote = "I had a play with Hugo and it was good, uses Markdown files for content" +link = "https://twitter.com/dcaunt/statuses/406466996277374976" +date = 2013-11-29T00:00:00Z + +[[tweet]] +name = "David Gay" +twitter_handle = "@oddshocks" +quote = "Hugo is super-rad." +link = "https://twitter.com/oddshocks/statuses/405083217893421056" +date = 2013-11-25T00:00:00Z + +[[tweet]] +name = "Diti" +twitter_handle = "@DitiPengi" +quote = "The dev version of Hugo is AWESOME! <3 I promise, I will try to learn go ASAP and help contribute to the project! Just too great!" +link = "https://twitter.com/DitiPengi/status/472470974051676160" +date = 2014-05-30T00:00:00Z + +[[tweet]] +name = "Douglas Stephen " +twitter_handle = "@DougStephenJr" +quote = "Even as a long-time Octopress fan, I’ve gotta admit that this project Hugo looks very very cool" +link = "https://twitter.com/DougStephenJr/statuses/364512471660249088" +date = 2013-08-05T00:00:00Z + +[[tweet]] +name = "Hugo Rodger-Brown" +twitter_handle = "@hugorodgerbrown" +quote = "Finally someone builds me my own static site generator" +link = "https://twitter.com/hugorodgerbrown/statuses/364417910153818112" +date = 2013-05-08T00:00:00Z + +[[tweet]] +name = "Hugo Roy" +twitter_handle = "@hugoroyd" +quote = "Finally the answer to the question my parents have been asking: What does Hugo do?" +link = "https://twitter.com/hugoroyd/status/501704796727173120" +date = 2014-08-19T00:00:00Z + +[[tweet]] +name = "Daniel Miessler" +twitter_handle = "@DanielMiessler" +quote = "Websites for named vulnerabilities should run on static site generator platforms like Hugo. Read-only + burst traffic = static." +link = "https://twitter.com/DanielMiessler/status/704703841673957376" +date = 2016-03-01T00:00:00Z + +[[tweet]] +name = "Javier Segura" +twitter_handle = "@jsegura" +quote = "Another site generated with Hugo here! I'm getting in love with it." +link = "https://twitter.com/jsegura/status/465978434154659841" +date = 2014-05-12T00:00:00Z + +[[tweet]] +name = "Jim Biancolo" +twitter_handle = "@jimbiancolo" +quote = "I’m loving the static site generator renaissance we are currently enjoying. Hugo is new, looks great, written in Go" +link = "https://twitter.com/jimbiancolo/statuses/408678420348813314" +date = 2013-05-12T00:00:00Z + +[[tweet]] +name = "Jip J. Dekker" +twitter_handle = "@jipjdekker" +quote = "Building a personal website in Hugo. Works like a charm. And written in @golang!" +link = "https://twitter.com/jipjdekker/status/413783548735152131" +date = 2013-12-19T00:00:00Z + +[[tweet]] +name = "Jose Gonzalvo" +twitter_handle = "@jgonzalvo" +quote = "Checking out Hugo; Loving it so far. Like Jekyll but not so blog-oriented and written in go" +link = "https://twitter.com/jgonzalvo/statuses/408177855819173888" +date = 2013-12-04T00:00:00Z + +[[tweet]] +name = "Josh Matz" +twitter_handle = "@joshmatz" +quote = "A static site generator without the long build times? Yes, please!" +link = "https://twitter.com/joshmatz/statuses/364437436870696960" +date = 2013-08-05T00:00:00Z + +[[tweet]] +name = "Kieran Healy" +twitter_handle = "@kjhealy" +quote = "OK, so in today's speed battle of static site generators, @spf13's hugo is kicking everyone's ass, by miles." +link = "https://twitter.com/kjhealy/status/437349384809115648" +date = 2014-02-22T00:00:00Z + +[[tweet]] +name = "Ludovic Chabant" +twitter_handle = "@ludovicchabant" +quote = "Good work on Hugo, I’m impressed with the speed!" +link = "https://twitter.com/ludovicchabant/statuses/408806199602053120" +date = 2013-12-06T00:00:00Z + +[[tweet]] +name = "Luke Holder" +twitter_handle = "@lukeholder" +quote = "this is AWESOME. a single little executable and so fast." +link = "https://twitter.com/lukeholder/status/430352287936946176" +date = 2014-02-03T00:00:00Z + +[[tweet]] +name = "Markus Eliasson" +twitter_handle = "@markuseliasson" +quote = "Hugo is fast, dead simple to setup and well documented" +link = "https://twitter.com/markuseliasson/status/501594865877008384" +date = 2014-08-19T00:00:00Z + +[[tweet]] +name = "mercime" +twitter_handle = "@mercime_one" +quote = "Hugo: Makes the Web Fun Again" +link = "https://twitter.com/mercime_one/status/500547145087205377" +date = 2014-08-16T00:00:00Z + +[[tweet]] +name = "Michael Whatcott" +twitter_handle = "@mdwhatcott" +quote = "One more satisfied #Hugo blogger. Thanks @spf13 and friends!" +link = "https://twitter.com/mdwhatcott/status/469980686531571712" +date = 2014-05-23T00:00:00Z + +[[tweet]] +name = "Nathan Toups" +twitter_handle = "@rojoroboto" +quote = "I love Hugo! My site is generated with it now http://rjrbt.io" +link = "https://twitter.com/rojoroboto/status/423439915620106242" +date = 2014-01-15T00:00:00Z + +[[tweet]] +name = "Ruben Solvang" +twitter_handle = "@messo85" +quote = "#Hugo is the new @jekyllrb / @middlemanapp! Faster, easier and runs everywhere." +link = "https://twitter.com/messo85/status/472825062027182081" +date = 2014-05-31T00:00:00Z + +[[tweet]] +name = "Ryan Martinsen" +twitter_handle = "@popthestack" +quote = "Also, I re-launched my blog (it looks the same as before) using Hugo, a *fast* static engine. Very happy with it. gohugo.io" +link = "https://twitter.com/popthestack/status/549972754125307904" +date = 2014-12-30T00:00:00Z + +[[tweet]] +name = "The Lone Cuber" +twitter_handle = "@TheLoneCuber" +quote = "Jekyll is dead to me these days though... long live Hugo! Hugo is *by far* the best in its field. Thanks for making it happen." +link = "https://twitter.com/TheLoneCuber/status/495716684456398848" +date = 2014-08-02T00:00:00Z + +[[tweet]] +name = "The Lone Cuber" +twitter_handle = "@TheLoneCuber" +quote = "Finally, a publishing platform that's a joy to use. #NoMoreBarriers" +link = "https://twitter.com/TheLoneCuber/status/495731334711488512" +date = 2014-08-02T00:00:00Z + +[[tweet]] +name = "WorkHTML" +twitter_handle = "@workhtml" +quote = " #Hugo A very good alternative for #wordpress !!! A fast and modern static website engine gohugo.io " +link = "https://twitter.com/workhtml/status/563064361301053440" +date = 2015-02-04T00:00:00Z diff --cc docs/netlify.toml index 3a37a3bd,00000000..f149edc7 mode 100644,000000..100644 --- a/docs/netlify.toml +++ b/docs/netlify.toml @@@ -1,31 -1,0 +1,35 @@@ +[build] +publish = "public" +command = "hugo --gc --minify" + +[context.production.environment] - HUGO_VERSION = "0.86.1" ++HUGO_VERSION = "0.88.1" +HUGO_ENV = "production" +HUGO_ENABLEGITINFO = "true" + +[context.split1] +command = "hugo --gc --minify --enableGitInfo" + +[context.split1.environment] - HUGO_VERSION = "0.86.1" ++HUGO_VERSION = "0.88.1" +HUGO_ENV = "production" + +[context.deploy-preview] +command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL" + +[context.deploy-preview.environment] - HUGO_VERSION = "0.86.1" ++HUGO_VERSION = "0.88.1" + +[context.branch-deploy] +command = "hugo --gc --minify -b $DEPLOY_PRIME_URL" + +[context.branch-deploy.environment] - HUGO_VERSION = "0.86.1" ++HUGO_VERSION = "0.88.1" + +[context.next.environment] +HUGO_ENABLEGITINFO = "true" + ++[[redirects]] ++from = "/npmjs/*" ++to = "/npmjs/" ++status = 200 diff --cc docs/resources/_gen/images/news/0.87.0-relnotes/featured_hud7315cc4b84c00922361254b17154b9c_104936_480x0_resize_catmullrom_3.png index 00000000,00000000..46cd224b new file mode 100644 Binary files differ diff --cc docs/resources/_gen/images/news/0.87.0-relnotes/featured_hud7315cc4b84c00922361254b17154b9c_104936_640x0_resize_catmullrom_3.png index 00000000,00000000..ecaf9dcc new file mode 100644 Binary files differ diff --cc docs/resources/_gen/images/news/0.88.0-relnotes/featured_hubd2e74572b88af11154b43148569d005_87331_480x0_resize_catmullrom_3.png index 00000000,00000000..31a62636 new file mode 100644 Binary files differ diff --cc docs/resources/_gen/images/news/0.88.0-relnotes/featured_hubd2e74572b88af11154b43148569d005_87331_640x0_resize_catmullrom_3.png index 00000000,00000000..70ca9d8d new file mode 100644 Binary files differ diff --cc docs/static/npmjs/index.html index 00000000,00000000..88dd510a new file mode 100644 --- /dev/null +++ b/docs/static/npmjs/index.html @@@ -1,0 -1,0 +1,6 @@@ ++ ++ ++ ++ ++ ++