Merge commit '35dec7c96f7ee3eb17dd444f7067f0c776fb56ae'
|
@ -1,361 +1,133 @@
|
||||||
{
|
{
|
||||||
"version": "0.2",
|
"version": "0.2",
|
||||||
"words": [
|
|
||||||
"aaabaab",
|
|
||||||
"aabb",
|
|
||||||
"aabba",
|
|
||||||
"aabbaa",
|
|
||||||
"aabbaabb",
|
|
||||||
"aabbaabbab",
|
|
||||||
"abbaa",
|
|
||||||
"abourget",
|
|
||||||
"absurl",
|
|
||||||
"adoc",
|
|
||||||
"algolia",
|
|
||||||
"allowfullscreen",
|
|
||||||
"ananke",
|
|
||||||
"anchorize",
|
|
||||||
"anthonyfok",
|
|
||||||
"asciidoctor",
|
|
||||||
"attrlink",
|
|
||||||
"azblob",
|
|
||||||
"baseof",
|
|
||||||
"bbaa",
|
|
||||||
"bcde",
|
|
||||||
"bcdef",
|
|
||||||
"beevelop",
|
|
||||||
"Bergevin",
|
|
||||||
"bibtex",
|
|
||||||
"Bjørn",
|
|
||||||
"blackfriday",
|
|
||||||
"blogue",
|
|
||||||
"bogem",
|
|
||||||
"Bootcamp",
|
|
||||||
"brlink",
|
|
||||||
"Brotli",
|
|
||||||
"Browsersync",
|
|
||||||
"canonicalization",
|
|
||||||
"canonify",
|
|
||||||
"Catmull",
|
|
||||||
"Catwoman",
|
|
||||||
"changefreq",
|
|
||||||
"Cheatsheet",
|
|
||||||
"choco",
|
|
||||||
"chromastyles",
|
|
||||||
"clockoon",
|
|
||||||
"Cloudinary",
|
|
||||||
"CNAME",
|
|
||||||
"Codecademy's",
|
|
||||||
"CODEOWNERS",
|
|
||||||
"Coen",
|
|
||||||
"Commento",
|
|
||||||
"Cond",
|
|
||||||
"contentdir",
|
|
||||||
"Contentful",
|
|
||||||
"Copr",
|
|
||||||
"copyrighthtml",
|
|
||||||
"corejs",
|
|
||||||
"countrunes",
|
|
||||||
"countwords",
|
|
||||||
"crossreferences",
|
|
||||||
"daftaupe",
|
|
||||||
"datatable",
|
|
||||||
"DATOCMS",
|
|
||||||
"debugconfig",
|
|
||||||
"defang",
|
|
||||||
"Deindent",
|
|
||||||
"DELIM",
|
|
||||||
"dhersam",
|
|
||||||
"digitalcraftsman",
|
|
||||||
"Disqus",
|
|
||||||
"Dmdh",
|
|
||||||
"doas",
|
|
||||||
"dokuwiki",
|
|
||||||
"dpkg",
|
|
||||||
"DRING",
|
|
||||||
"Eiqc",
|
|
||||||
"Eliott",
|
|
||||||
"embeddable",
|
|
||||||
"Emojify",
|
|
||||||
"Enwrite",
|
|
||||||
"eopkg",
|
|
||||||
"eparis",
|
|
||||||
"errorf",
|
|
||||||
"erroridf",
|
|
||||||
"esbuild",
|
|
||||||
"Evernote",
|
|
||||||
"Exif",
|
|
||||||
"exitwp",
|
|
||||||
"expirydate",
|
|
||||||
"Feminella",
|
|
||||||
"firstpost",
|
|
||||||
"Flickr",
|
|
||||||
"Formspree",
|
|
||||||
"fpath",
|
|
||||||
"Francia",
|
|
||||||
"freenode",
|
|
||||||
"frontmatter",
|
|
||||||
"funcs",
|
|
||||||
"funcsig",
|
|
||||||
"Garen",
|
|
||||||
"Garuda",
|
|
||||||
"gcloud",
|
|
||||||
"Getenv",
|
|
||||||
"getjson",
|
|
||||||
"getpage",
|
|
||||||
"Gitee",
|
|
||||||
"Gmfc",
|
|
||||||
"Goel",
|
|
||||||
"Gohugo",
|
|
||||||
"gohugoio",
|
|
||||||
"goldenbridge",
|
|
||||||
"Goldmark",
|
|
||||||
"gomodules",
|
|
||||||
"GOPATH",
|
|
||||||
"govendor",
|
|
||||||
"Gowans",
|
|
||||||
"Grayscale",
|
|
||||||
"Gregor",
|
|
||||||
"Gruber",
|
|
||||||
"gtag",
|
|
||||||
"gvfs",
|
|
||||||
"hidecaption",
|
|
||||||
"hmac",
|
|
||||||
"Hokus",
|
|
||||||
"hola",
|
|
||||||
"hügó",
|
|
||||||
"hugodeps",
|
|
||||||
"hugodoc",
|
|
||||||
"Hugofy",
|
|
||||||
"hugolang",
|
|
||||||
"hugoversion",
|
|
||||||
"Hyas",
|
|
||||||
"Hyvor",
|
|
||||||
"iframes",
|
|
||||||
"ifttt",
|
|
||||||
"iife",
|
|
||||||
"imgproc",
|
|
||||||
"importr",
|
|
||||||
"IMWQ",
|
|
||||||
"indice",
|
|
||||||
"innershortcode",
|
|
||||||
"Intelli",
|
|
||||||
"interdoc",
|
|
||||||
"IPTC",
|
|
||||||
"ismenucurrent",
|
|
||||||
"Isset",
|
|
||||||
"Isso",
|
|
||||||
"Jaco",
|
|
||||||
"JIRN",
|
|
||||||
"johnpatitucci",
|
|
||||||
"Joomla",
|
|
||||||
"JRBR",
|
|
||||||
"jsonify",
|
|
||||||
"Karmada",
|
|
||||||
"katex",
|
|
||||||
"keycdn",
|
|
||||||
"KEYVALS",
|
|
||||||
"kubernetes",
|
|
||||||
"Kubuntu",
|
|
||||||
"Lanczos",
|
|
||||||
"langformatnumber",
|
|
||||||
"lastmod",
|
|
||||||
"libwebp",
|
|
||||||
"linktitle",
|
|
||||||
"Lipi",
|
|
||||||
"lrwxr",
|
|
||||||
"Lubuntu",
|
|
||||||
"maingo",
|
|
||||||
"markdownified",
|
|
||||||
"markdownify",
|
|
||||||
"mathjax",
|
|
||||||
"mdhender",
|
|
||||||
"mdshortcode",
|
|
||||||
"MENUENTRY",
|
|
||||||
"mercredi",
|
|
||||||
"Milli",
|
|
||||||
"Mittwoch",
|
|
||||||
"mkdir",
|
|
||||||
"modh",
|
|
||||||
"monokai",
|
|
||||||
"Morling",
|
|
||||||
"mspowerpoint",
|
|
||||||
"Multihost",
|
|
||||||
"Muut",
|
|
||||||
"myclass",
|
|
||||||
"mydeployment",
|
|
||||||
"myindex",
|
|
||||||
"mylayout",
|
|
||||||
"mylogin",
|
|
||||||
"mypage",
|
|
||||||
"mypartials",
|
|
||||||
"mypost",
|
|
||||||
"mysite",
|
|
||||||
"myspa",
|
|
||||||
"mystyle",
|
|
||||||
"mytextpartial",
|
|
||||||
"mytheme",
|
|
||||||
"NDJSON",
|
|
||||||
"needsexample",
|
|
||||||
"Netravali",
|
|
||||||
"newparam",
|
|
||||||
"Nichlas",
|
|
||||||
"Nikhil",
|
|
||||||
"Nikola",
|
|
||||||
"Njjy",
|
|
||||||
"nlist",
|
|
||||||
"nobr",
|
|
||||||
"nocopy",
|
|
||||||
"Norsk",
|
|
||||||
"nosniff",
|
|
||||||
"NOSQL",
|
|
||||||
"notoc",
|
|
||||||
"novembre",
|
|
||||||
"numfmt",
|
|
||||||
"NUMWORKERMULTIPLIER",
|
|
||||||
"Obhu",
|
|
||||||
"octohug",
|
|
||||||
"Octopress",
|
|
||||||
"oldparam",
|
|
||||||
"onrender",
|
|
||||||
"opengraph",
|
|
||||||
"OWASP",
|
|
||||||
"Pandoc",
|
|
||||||
"partialcached",
|
|
||||||
"Pastorius",
|
|
||||||
"Patitucci",
|
|
||||||
"PCRE",
|
|
||||||
"peaceiris",
|
|
||||||
"Pedersen",
|
|
||||||
"Pekka",
|
|
||||||
"permalinkable",
|
|
||||||
"plainify",
|
|
||||||
"POSIX",
|
|
||||||
"postprocess",
|
|
||||||
"Poupin",
|
|
||||||
"prerender",
|
|
||||||
"println",
|
|
||||||
"Pritchard",
|
|
||||||
"publishdate",
|
|
||||||
"Pygments",
|
|
||||||
"qref",
|
|
||||||
"querify",
|
|
||||||
"QVOMC",
|
|
||||||
"Racic",
|
|
||||||
"Rclone",
|
|
||||||
"rdwatters",
|
|
||||||
"readfile",
|
|
||||||
"rebinded",
|
|
||||||
"recommendedby",
|
|
||||||
"REDIR",
|
|
||||||
"reftext",
|
|
||||||
"relatedfuncs",
|
|
||||||
"relref",
|
|
||||||
"relurl",
|
|
||||||
"remarkjs",
|
|
||||||
"rgba",
|
|
||||||
"Riku",
|
|
||||||
"rlimit",
|
|
||||||
"roboto",
|
|
||||||
"rssxml",
|
|
||||||
"rwxrwxrwx",
|
|
||||||
"RYUGV",
|
|
||||||
"safehtml",
|
|
||||||
"safejs",
|
|
||||||
"Samsa",
|
|
||||||
"schemaorg",
|
|
||||||
"setx",
|
|
||||||
"Shekhar",
|
|
||||||
"Shortcode",
|
|
||||||
"Shortcodes",
|
|
||||||
"signup",
|
|
||||||
"Silvola",
|
|
||||||
"Sindre",
|
|
||||||
"sitemapindex",
|
|
||||||
"sitemapxml",
|
|
||||||
"slugorfilename",
|
|
||||||
"Smartcrop",
|
|
||||||
"Sobre",
|
|
||||||
"Sprintf",
|
|
||||||
"Startseite",
|
|
||||||
"strconv",
|
|
||||||
"stringifier",
|
|
||||||
"struct",
|
|
||||||
"structs",
|
|
||||||
"subdir",
|
|
||||||
"svgs",
|
|
||||||
"symdiff",
|
|
||||||
"Talkyard",
|
|
||||||
"taxo",
|
|
||||||
"taxonomyname",
|
|
||||||
"tbody",
|
|
||||||
"tdewolff",
|
|
||||||
"testshortcodes",
|
|
||||||
"thead",
|
|
||||||
"Thinkful",
|
|
||||||
"Tknx",
|
|
||||||
"TLDR",
|
|
||||||
"TMPDIR",
|
|
||||||
"toclevels",
|
|
||||||
"TOCSS",
|
|
||||||
"todos",
|
|
||||||
"tojson",
|
|
||||||
"Tomango",
|
|
||||||
"topologix",
|
|
||||||
"Torikian",
|
|
||||||
"totoml",
|
|
||||||
"toyaml",
|
|
||||||
"twitteruser",
|
|
||||||
"Unmarshal",
|
|
||||||
"unpublishdate",
|
|
||||||
"Unsharp",
|
|
||||||
"urlize",
|
|
||||||
"urlset",
|
|
||||||
"utimestamp",
|
|
||||||
"vendored",
|
|
||||||
"vimrc",
|
|
||||||
"wanghc",
|
|
||||||
"Wappalyzer",
|
|
||||||
"warnf",
|
|
||||||
"webp",
|
|
||||||
"Wercker",
|
|
||||||
"wibble",
|
|
||||||
"wordcount",
|
|
||||||
"workson",
|
|
||||||
"Wowchemy",
|
|
||||||
"wpxr",
|
|
||||||
"Xbaabbab",
|
|
||||||
"Xubuntu",
|
|
||||||
"xvzf",
|
|
||||||
"yoyoyo",
|
|
||||||
"yunbox",
|
|
||||||
"Zgotmpl",
|
|
||||||
"Zorin",
|
|
||||||
"zzbbaabb",
|
|
||||||
"مدونتي"
|
|
||||||
],
|
|
||||||
"language": "en,en-US,de,fr",
|
|
||||||
"allowCompoundWords": true,
|
"allowCompoundWords": true,
|
||||||
"files": [
|
"files": [
|
||||||
"**/*.md"
|
"**/*.md"
|
||||||
],
|
],
|
||||||
"ignoreRegExpList": [
|
"flagWords": [
|
||||||
"<!-- prettier-ignore -->\\n(`{3,})\\w*\\n[\\s\\S]+?\\1",
|
"alot",
|
||||||
"\\[(\\*{2})?@\\w+?\\1\\]",
|
"hte",
|
||||||
"\\[`\\w+`\\]",
|
"reccommend",
|
||||||
"ve{2,}r{2,}y",
|
"seperate"
|
||||||
"ve+r+y+long\\w*",
|
|
||||||
"\\/.*?\\/",
|
|
||||||
"\\_\\w+",
|
|
||||||
"\\#\\w+"
|
|
||||||
],
|
],
|
||||||
"ignorePaths": [
|
"ignorePaths": [
|
||||||
".cspell.json",
|
"**/emojis.md",
|
||||||
"**/node_modules/**",
|
"**/commands/*",
|
||||||
"*.min.*",
|
"**/showcase/*",
|
||||||
"**/news/*",
|
"**/tools/*"
|
||||||
"**/showcase/*"
|
|
||||||
],
|
],
|
||||||
"useGitignore": true,
|
"ignoreRegExpList": [
|
||||||
"enabled": true
|
"# cspell: ignore fenced code blocks",
|
||||||
|
"^(\\s*`{3,}).*[\\s\\S]*?^\\1",
|
||||||
|
"# cspell: ignore words joined with dot",
|
||||||
|
"\\w+\\.\\w+",
|
||||||
|
"# cspell: ignore strings within backticks",
|
||||||
|
"`.+`",
|
||||||
|
"# cspell: ignore strings within single quotes",
|
||||||
|
"'.+'",
|
||||||
|
"# cspell: ignore strings within double quotes",
|
||||||
|
"\".+\"",
|
||||||
|
"# cspell: ignore strings within brackets",
|
||||||
|
"\\[.+\\]",
|
||||||
|
"# cspell: ignore strings within parentheses",
|
||||||
|
"\\(.+\\)",
|
||||||
|
"# cspell: ignore words that begin with a slash",
|
||||||
|
"/\\w+",
|
||||||
|
"# cspell: ignore everything within action delimiters",
|
||||||
|
"\\{\\{.+\\}\\}",
|
||||||
|
"# cspell: ignore everything after a right arrow",
|
||||||
|
"\\s+→\\s+.+"
|
||||||
|
],
|
||||||
|
"language": "en",
|
||||||
|
"words": [
|
||||||
|
"antialiasing",
|
||||||
|
"codeowners",
|
||||||
|
"composability",
|
||||||
|
"configurators",
|
||||||
|
"defang",
|
||||||
|
"deindent",
|
||||||
|
"downscale",
|
||||||
|
"downscaled",
|
||||||
|
"downscaling",
|
||||||
|
"exif",
|
||||||
|
"geolocalized",
|
||||||
|
"grayscale",
|
||||||
|
"marshal",
|
||||||
|
"marshaling",
|
||||||
|
"multihost",
|
||||||
|
"performantly",
|
||||||
|
"preconfigured",
|
||||||
|
"prerendering",
|
||||||
|
"redirection",
|
||||||
|
"redirections",
|
||||||
|
"shortcode",
|
||||||
|
"shortcodes",
|
||||||
|
"subexpression",
|
||||||
|
"subexpressions",
|
||||||
|
"suppressable",
|
||||||
|
"templating",
|
||||||
|
"transpile",
|
||||||
|
"transpiles",
|
||||||
|
"unmarshal",
|
||||||
|
"unmarshaling",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"# cspell: ignore foreign language words",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"bezpieczeństwo",
|
||||||
|
"dokumentation",
|
||||||
|
"libros",
|
||||||
|
"miesiąc",
|
||||||
|
"miesiąc",
|
||||||
|
"miesięcy",
|
||||||
|
"miesięcy",
|
||||||
|
"misérables",
|
||||||
|
"projekt",
|
||||||
|
"régime",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"# cspell: ignore proper nouns",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"Eliott",
|
||||||
|
"Gregor",
|
||||||
|
"Jaco",
|
||||||
|
"Noll",
|
||||||
|
"Pastorius",
|
||||||
|
"Samsa",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"# cspell: ignore operating systems and software packages",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"asciidoctor",
|
||||||
|
"brotli",
|
||||||
|
"corejs",
|
||||||
|
"disqus",
|
||||||
|
"doas",
|
||||||
|
"eopkg",
|
||||||
|
"gitee",
|
||||||
|
"goldmark",
|
||||||
|
"kubuntu",
|
||||||
|
"lubuntu",
|
||||||
|
"nosql",
|
||||||
|
"pandoc",
|
||||||
|
"pkgin",
|
||||||
|
"rclone",
|
||||||
|
"xubuntu",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"# cspell: ignore miscellaneous",
|
||||||
|
"# ----------------------------------------------------------------------",
|
||||||
|
"dring",
|
||||||
|
"getenv",
|
||||||
|
"gohugo",
|
||||||
|
"inor",
|
||||||
|
"jdoe",
|
||||||
|
"milli",
|
||||||
|
"rgba",
|
||||||
|
"rsmith",
|
||||||
|
"stringifier",
|
||||||
|
"struct",
|
||||||
|
"tdewolff",
|
||||||
|
"tjones",
|
||||||
|
"toclevels",
|
||||||
|
"vals",
|
||||||
|
"xfeff",
|
||||||
|
"zgotmplz"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
2
docs/.github/workflows/codeql-analysis.yml
vendored
|
@ -15,7 +15,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v2
|
||||||
|
|
9
docs/.github/workflows/spellcheck.yml
vendored
|
@ -1,9 +1,9 @@
|
||||||
name: "Check spelling"
|
name: "Check spelling"
|
||||||
on: # rebuild any PRs and main branch changes
|
on:
|
||||||
push:
|
push:
|
||||||
|
pull_request:
|
||||||
branches-ignore:
|
branches-ignore:
|
||||||
- "dependabot/**"
|
- "dependabot/**"
|
||||||
pull_request:
|
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
@ -12,10 +12,11 @@ jobs:
|
||||||
spellcheck:
|
spellcheck:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: streetsidesoftware/cspell-action@v2
|
- uses: streetsidesoftware/cspell-action@v4
|
||||||
with:
|
with:
|
||||||
check_dot_files: false
|
check_dot_files: false
|
||||||
|
files: content/**/*.md
|
||||||
incremental_files_only: true
|
incremental_files_only: true
|
||||||
inline: warning
|
inline: warning
|
||||||
strict: false
|
strict: false
|
||||||
|
|
4
docs/.github/workflows/super-linter.yml
vendored
|
@ -18,10 +18,10 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Code
|
- name: Checkout Code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Lint Code Base
|
- name: Lint Code Base
|
||||||
uses: github/super-linter/slim@v4
|
uses: super-linter/super-linter/slim@v5
|
||||||
env:
|
env:
|
||||||
DEFAULT_BRANCH: master
|
DEFAULT_BRANCH: master
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
329
docs/LICENSE.md
|
@ -1,194 +1,201 @@
|
||||||
Apache License
|
Apache License
|
||||||
==============
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
1. Definitions.
|
||||||
|
|
||||||
#### 1. Definitions
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
owner that is granting the License.
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
that control, are controlled by, or are under common control with that entity.
|
exercising permissions granted by this License.
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
permissions granted by this License.
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
"Object" form shall mean any form resulting from mechanical
|
||||||
but not limited to software source code, documentation source, and configuration
|
transformation or translation of a Source form, including but
|
||||||
files.
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
Object form, made available under the License, as indicated by a
|
||||||
generated documentation, and conversions to other media types.
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
available under the License, as indicated by a copyright notice that is included
|
form, that is based on (or derived from) the Work and for which the
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
"Contribution" shall mean any work of authorship, including
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
the original version of the Work and any modifications or additions
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
subsequently incorporated within the Work.
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
incorporated within the Work.
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
modifications, and in Source or Object form, provided that You
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
meet the following conditions:
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
(b) You must cause any modified files to carry prominent notices
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
stating that You changed the files; and
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
distribution, then any Derivative Works that You distribute must
|
||||||
provided that You meet the following conditions:
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
You may add Your own copyright statement to Your modifications and
|
||||||
this License; and
|
may provide additional or different license terms and conditions
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
changed the files; and
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
the conditions stated in this License.
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
this License, without any additional terms or conditions.
|
||||||
with the conditions stated in this License.
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
conditions of this License, without any additional terms or conditions.
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
implied, including, without limitation, any warranties or conditions
|
||||||
such Contributions.
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
#### 6. Trademarks
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
service marks, or product names of the Licensor, except as required for
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
reasonable and customary use in describing the origin of the Work and
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
reproducing the content of the NOTICE file.
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
Copyright [yyyy] [name of copyright owner]
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
limitations under the License.
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
|
@ -19,12 +19,11 @@ Spelling fixes are most welcomed, and if you want to contribute longer sections
|
||||||
* For example, try to find short snippets that teaches people about the concept. If the example is also useful as-is (copy and paste), then great. Don't list long and similar examples just so people can use them on their sites.
|
* For example, try to find short snippets that teaches people about the concept. If the example is also useful as-is (copy and paste), then great. Don't list long and similar examples just so people can use them on their sites.
|
||||||
* Hugo has users from all over the world, so easy to understand and [simple English](https://simple.wikipedia.org/wiki/Basic_English) is good.
|
* Hugo has users from all over the world, so easy to understand and [simple English](https://simple.wikipedia.org/wiki/Basic_English) is good.
|
||||||
|
|
||||||
|
|
||||||
## Edit the theme
|
## Edit the theme
|
||||||
|
|
||||||
If you want to do docs-related theme changes, the simplest way is to have both `hugoDocs` and `gohugoioTheme` cloned as sibling directories, and then run:
|
If you want to do docs-related theme changes, the simplest way is to have both `hugoDocs` and `gohugoioTheme` cloned as sibling directories, and then run:
|
||||||
|
|
||||||
```
|
```sh
|
||||||
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
|
HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -37,7 +36,7 @@ HUGO_MODULE_WORKSPACE=hugo.work hugo server --ignoreVendorPaths "**"
|
||||||
|
|
||||||
To view the documentation site locally, you need to clone this repository:
|
To view the documentation site locally, you need to clone this repository:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
git clone https://github.com/gohugoio/hugoDocs.git
|
git clone https://github.com/gohugoio/hugoDocs.git
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -45,7 +44,7 @@ Also note that the documentation version for a given version of Hugo can also be
|
||||||
|
|
||||||
Then to view the docs in your browser, run Hugo and open up the link:
|
Then to view the docs in your browser, run Hugo and open up the link:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
▶ hugo server
|
▶ hugo server
|
||||||
|
|
||||||
Started building sites ...
|
Started building sites ...
|
||||||
|
|
7
docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_print.css
generated
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
@media print {
|
||||||
|
#page-footer,
|
||||||
|
body > footer,
|
||||||
|
body > nav {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
11
docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_right-sidebar.css
generated
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#right-sidebar {
|
||||||
|
scrollbar-width: none; /* hide scrollbar: Firefox */
|
||||||
|
-ms-overflow-style: none; /* hide scrollbar: Internet Explorer 10+ */
|
||||||
|
height: calc(100vh - 9rem);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#right-sidebar::-webkit-scrollbar { /* hide scrollbar: WebKit */
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
20
docs/_vendor/github.com/gohugoio/gohugoioTheme/assets/css/_shame.css
generated
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
/*
|
||||||
|
Make h6 elements behave like dt elements. Initially implemented to support
|
||||||
|
linkable glossary entries.
|
||||||
|
|
||||||
|
Yes, it's a hack. That's why it's in the shame file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 1.125rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6:first-of-type {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6 ~ p {
|
||||||
|
margin: 0.5em 0 2em 0;
|
||||||
|
}
|
|
@ -21,18 +21,18 @@
|
||||||
@import '_no-js';
|
@import '_no-js';
|
||||||
@import '_social-icons';
|
@import '_social-icons';
|
||||||
@import '_stickyheader';
|
@import '_stickyheader';
|
||||||
|
@import '_right-sidebar';
|
||||||
@import '_svg';
|
@import '_svg';
|
||||||
@import '_chroma';
|
@import '_chroma';
|
||||||
@import '_variables';
|
@import '_variables';
|
||||||
|
@import '_print';
|
||||||
|
@import '_shame';
|
||||||
|
|
||||||
.nested-blockquote blockquote {
|
.nested-blockquote blockquote {
|
||||||
border-left: 4px solid var(--primary-color);
|
border-left: 4px solid var(--primary-color);
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
/*margin: 0;*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.mw-90 {
|
.mw-90 {
|
||||||
max-width:90%;
|
max-width:90%;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5174,6 +5174,16 @@ code, .code, pre code, .highlight pre {
|
||||||
right:0;
|
right:0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#right-sidebar {
|
||||||
|
scrollbar-width: none; /* hide scrollbar: Firefox */
|
||||||
|
-ms-overflow-style: none; /* hide scrollbar: Internet Explorer 10+ */
|
||||||
|
height: calc(100vh - 9rem);
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
#right-sidebar::-webkit-scrollbar { /* hide scrollbar: WebKit */
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
.fill-current { fill: currentColor; }
|
.fill-current { fill: currentColor; }
|
||||||
/* Background */
|
/* Background */
|
||||||
.chroma { background-color: #ffffff }
|
.chroma { background-color: #ffffff }
|
||||||
|
@ -5305,10 +5315,33 @@ code, .code, pre code, .highlight pre {
|
||||||
.chroma .gt { color: #aa0000 }
|
.chroma .gt { color: #aa0000 }
|
||||||
/* TextWhitespace */
|
/* TextWhitespace */
|
||||||
.chroma .w { color: #bbbbbb }
|
.chroma .w { color: #bbbbbb }
|
||||||
|
@media print {
|
||||||
|
#page-footer,
|
||||||
|
body > footer,
|
||||||
|
body > nav {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
Make h6 elements behave like dt elements. Initially implemented to support
|
||||||
|
linkable glossary entries.
|
||||||
|
|
||||||
|
Yes, it's a hack. That's why it's in the shame file.
|
||||||
|
*/
|
||||||
|
h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-size: 1.125rem;
|
||||||
|
}
|
||||||
|
h6:first-of-type {
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
h6 ~ p {
|
||||||
|
margin: 0.5em 0 2em 0;
|
||||||
|
}
|
||||||
.nested-blockquote blockquote {
|
.nested-blockquote blockquote {
|
||||||
border-left: 4px solid #0594CB;
|
border-left: 4px solid #0594CB;
|
||||||
padding-left: 1em;
|
padding-left: 1em;
|
||||||
/*margin: 0;*/
|
|
||||||
}
|
}
|
||||||
.mw-90 {
|
.mw-90 {
|
||||||
max-width:90%;
|
max-width:90%;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}
|
<h{{ .Level }} id="{{ .Anchor | safeURL }}">{{ .Text | safeHTML }}
|
||||||
{{- if and (ge .Level 2) (le .Level 4) }}{{" " -}}
|
{{- if in (slice 2 3 4 6) .Level }}{{" " -}}
|
||||||
<a class="header-link" href="#{{ .Anchor | safeURL }}"><svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/></svg></a>
|
<a class="header-link" href="#{{ .Anchor | safeURL }}"><svg class="fill-current o-60 hover-accent-color-light" height="22px" viewBox="0 0 24 24" width="22px" xmlns="http://www.w3.org/2000/svg"><path d="M0 0h24v24H0z" fill="none"/><path d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"/></svg></a>
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
</h{{ .Level }}>
|
</h{{ .Level }}>
|
||||||
|
|
250
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/_default/_markup/render-link.html
generated
Normal file
|
@ -0,0 +1,250 @@
|
||||||
|
{{- /* Last modified: 2023-09-04T09:23:04-07:00 */}}
|
||||||
|
|
||||||
|
{{- /*
|
||||||
|
Copyright 2023 Veriphor LLC
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
||||||
|
use this file except in compliance with the License. You may obtain a copy of
|
||||||
|
the License at
|
||||||
|
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
License for the specific language governing permissions and limitations under
|
||||||
|
the License.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /*
|
||||||
|
This render hook resolves internal destinations by looking for a matching:
|
||||||
|
|
||||||
|
1. Content page
|
||||||
|
2. Page resource (a file in the current page bundle)
|
||||||
|
3. Section resource (a file in the current section)
|
||||||
|
4. Global resource (a file in the assets directory)
|
||||||
|
|
||||||
|
It skips the section resource lookup if the current page is a leaf bundle.
|
||||||
|
|
||||||
|
External destinations are not modified.
|
||||||
|
|
||||||
|
You must place global resources in the assets directory. If you have placed
|
||||||
|
your resources in the static directory, and you are unable or unwilling to move
|
||||||
|
them, you must mount the static directory to the assets directory by including
|
||||||
|
both of these entries in your site configuration:
|
||||||
|
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'assets'
|
||||||
|
target = 'assets'
|
||||||
|
|
||||||
|
[[module.mounts]]
|
||||||
|
source = 'static'
|
||||||
|
target = 'assets'
|
||||||
|
|
||||||
|
By default, if this render hook is unable to resolve a destination, including a
|
||||||
|
fragment if present, it passes the destination through without modification. To
|
||||||
|
emit a warning or error, set the error level in your site configuration:
|
||||||
|
|
||||||
|
[params.render_hooks.link]
|
||||||
|
errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
|
||||||
|
|
||||||
|
When you set the error level to warning, and you are in a development
|
||||||
|
environment, you can visually highlight broken internal links:
|
||||||
|
|
||||||
|
[params.render_hooks.link]
|
||||||
|
errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
|
||||||
|
highlightBroken = true # true or false (default)
|
||||||
|
|
||||||
|
This will add a "broken" class to anchor elements with invalid src attributes.
|
||||||
|
Add a rule to your CSS targeting the broken links:
|
||||||
|
|
||||||
|
a.broken {
|
||||||
|
background: #ff0;
|
||||||
|
border: 2px solid #f00;
|
||||||
|
padding: 0.1em 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
This render hook may be unable to resolve destinations created with the ref and
|
||||||
|
relref shortcodes. Unless you set the error level to ignore you should not use
|
||||||
|
either of these shortcodes in conjunction with this render hook.
|
||||||
|
|
||||||
|
@context {string} Destination The link destination.
|
||||||
|
@context {page} Page A reference to the page containing the link.
|
||||||
|
@context {string} PlainText The link description as plain text.
|
||||||
|
@context {string} Text The link description.
|
||||||
|
@context {string} Title The link title.
|
||||||
|
|
||||||
|
@returns {template.html}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $renderHookName := "link" }}
|
||||||
|
|
||||||
|
{{- /* Verify minimum required version. */}}
|
||||||
|
{{- $minHugoVersion := "0.120.0" }}
|
||||||
|
{{- if lt hugo.Version $minHugoVersion }}
|
||||||
|
{{- errorf "The %q render hook requires Hugo v%s or later." $renderHookName $minHugoVersion }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Error level when unable to resolve destination: ignore, warning, or error. */}}
|
||||||
|
{{- $errorLevel := or site.Params.render_hooks.link.errorLevel "ignore" | lower }}
|
||||||
|
|
||||||
|
{{- /* If true, adds "broken" class to broken links. Applicable in development environment when errorLevel is warning. */}}
|
||||||
|
{{- $highlightBrokenLinks := or site.Params.render_hooks.link.highlightBroken false }}
|
||||||
|
|
||||||
|
{{- /* Validate error level. */}}
|
||||||
|
{{- if not (in (slice "ignore" "warning" "error") $errorLevel) }}
|
||||||
|
{{- errorf "The %q render hook is misconfigured. The errorLevel %q is invalid. Please check your site configuration." $renderHookName $errorLevel }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Determine content path for warning and error messages. */}}
|
||||||
|
{{- $contentPath := "" }}
|
||||||
|
{{- with .Page.File }}
|
||||||
|
{{- $contentPath = .Path }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $contentPath = .Path }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Parse destination. */}}
|
||||||
|
{{- $u := urls.Parse .Destination }}
|
||||||
|
|
||||||
|
{{- /* Set common message. */}}
|
||||||
|
{{- $msg := printf "The %q render hook was unable to resolve the destination %q in %s" $renderHookName $u.String $contentPath }}
|
||||||
|
|
||||||
|
{{- /* Set attributes for anchor element. */}}
|
||||||
|
{{- $attrs := dict "href" $u.String }}
|
||||||
|
{{- if $u.IsAbs }}
|
||||||
|
{{- /* Destination is a remote resource. */}}
|
||||||
|
{{- $attrs = merge $attrs (dict "rel" "external") }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with $u.Path }}
|
||||||
|
{{- with $p := or ($.Page.GetPage .) ($.Page.GetPage (strings.TrimRight "/" .)) }}
|
||||||
|
{{- /* Destination is a page. */}}
|
||||||
|
{{- $href := .RelPermalink }}
|
||||||
|
{{- with $u.RawQuery }}
|
||||||
|
{{- $href = printf "%s?%s" $href . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with $u.Fragment }}
|
||||||
|
{{- $ctx := dict
|
||||||
|
"contentPath" $contentPath
|
||||||
|
"errorLevel" $errorLevel
|
||||||
|
"page" $p
|
||||||
|
"parsedURL" $u
|
||||||
|
"renderHookName" $renderHookName
|
||||||
|
}}
|
||||||
|
{{- partial "inline/h-rh-l/validate-fragment.html" $ctx }}
|
||||||
|
{{- $href = printf "%s#%s" $href . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $attrs = dict "href" $href }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with $.Page.Resources.Get $u.Path }}
|
||||||
|
{{- /* Destination is a page resource; drop query and fragment. */}}
|
||||||
|
{{- $attrs = dict "href" .RelPermalink }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with (and (ne $.Page.BundleType "leaf") ($.Page.CurrentSection.Resources.Get $u.Path)) }}
|
||||||
|
{{- /* Destination is a section resource, and current page is not a leaf bundle. */}}
|
||||||
|
{{- $attrs = dict "href" .RelPermalink }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with resources.Get $u.Path }}
|
||||||
|
{{- /* Destination is a global resource; drop query and fragment. */}}
|
||||||
|
{{- $attrs = dict "href" .RelPermalink }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if eq $errorLevel "warning" }}
|
||||||
|
{{- warnf $msg }}
|
||||||
|
{{- if and $highlightBrokenLinks hugo.IsDevelopment }}
|
||||||
|
{{- $attrs = merge $attrs (dict "class" "broken") }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if eq $errorLevel "error" }}
|
||||||
|
{{- errorf $msg }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with $u.Fragment }}
|
||||||
|
{{- /* Destination is on the same page; prepend relative permalink. */}}
|
||||||
|
{{- $ctx := dict
|
||||||
|
"contentPath" $contentPath
|
||||||
|
"errorLevel" $errorLevel
|
||||||
|
"page" $.Page
|
||||||
|
"parsedURL" $u
|
||||||
|
"renderHookName" $renderHookName
|
||||||
|
}}
|
||||||
|
{{- partial "inline/h-rh-l/validate-fragment.html" $ctx }}
|
||||||
|
{{- $attrs = dict "href" (printf "%s#%s" $.Page.RelPermalink .) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if eq $errorLevel "warning" }}
|
||||||
|
{{- warnf $msg }}
|
||||||
|
{{- if and $highlightBrokenLinks hugo.IsDevelopment }}
|
||||||
|
{{- $attrs = merge $attrs (dict "class" "broken") }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if eq $errorLevel "error" }}
|
||||||
|
{{- errorf $msg }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Title }}
|
||||||
|
{{- $attrs = merge $attrs (dict "title" .) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- /* Render anchor element. */ -}}
|
||||||
|
<a
|
||||||
|
{{- range $k, $v := $attrs }}
|
||||||
|
{{- printf " %s=%q" $k $v | safeHTMLAttr }}
|
||||||
|
{{- end -}}
|
||||||
|
>{{ .Text | safeHTML }}</a>
|
||||||
|
|
||||||
|
{{- define "partials/inline/h-rh-l/validate-fragment.html" }}
|
||||||
|
{{- /*
|
||||||
|
Validates the fragment portion of a link destination.
|
||||||
|
|
||||||
|
@context {string} contentPath The page containing the link.
|
||||||
|
@context {srting} errorLevel The error level when unable to resolve destination; ignore (default), warning, or error.
|
||||||
|
@context {page} page The page corresponding to the link destination
|
||||||
|
@context {struct} parsedURL The link destination parsed by urls.Parse.
|
||||||
|
@context {string} renderHookName The name of the render hook.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $contentPath := .contentPath }}
|
||||||
|
{{- $errorLevel := .errorLevel }}
|
||||||
|
{{- $p := .page }}
|
||||||
|
{{- $u := .parsedURL }}
|
||||||
|
{{- $renderHookName := .renderHookName }}
|
||||||
|
|
||||||
|
{{- /* Validate. */}}
|
||||||
|
{{- with $u.Fragment }}
|
||||||
|
{{- if $p.Fragments.Identifiers.Contains . }}
|
||||||
|
{{- if gt ($p.Fragments.Identifiers.Count .) 1 }}
|
||||||
|
{{- $msg := printf "The %q render hook detected duplicate heading IDs %q in %s" $renderHookName . $contentPath }}
|
||||||
|
{{- if eq $errorLevel "warning" }}
|
||||||
|
{{- warnf $msg }}
|
||||||
|
{{- else if eq $errorLevel "error" }}
|
||||||
|
{{- errorf $msg }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- /* Determine target path for warning and error message. */}}
|
||||||
|
{{- $targetPath := "" }}
|
||||||
|
{{- with $p.File }}
|
||||||
|
{{- $targetPath = .Path }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $targetPath = .Path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- /* Set common message. */}}
|
||||||
|
{{- $msg := printf "The %q render hook was unable to find heading ID %q in %s. See %s" $renderHookName . $targetPath $contentPath }}
|
||||||
|
{{- if eq $targetPath $contentPath }}
|
||||||
|
{{- $msg = printf "The %q render hook was unable to find heading ID %q in %s" $renderHookName . $targetPath }}
|
||||||
|
{{- end }}
|
||||||
|
{{- /* Throw warning or error. */}}
|
||||||
|
{{- if eq $errorLevel "warning" }}
|
||||||
|
{{- warnf $msg }}
|
||||||
|
{{- else if eq $errorLevel "error" }}
|
||||||
|
{{- errorf $msg }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- end -}}
|
|
@ -95,7 +95,7 @@
|
||||||
{{- partial "opengraph/twitter_cards.html" . -}}
|
{{- partial "opengraph/twitter_cards.html" . -}}
|
||||||
|
|
||||||
{{ if hugo.IsProduction }}
|
{{ if hugo.IsProduction }}
|
||||||
{{ partial "gtag" . }}
|
{{ partial "gtag.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
@ -104,7 +104,7 @@
|
||||||
class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }}
|
class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }}
|
||||||
{{ . }}
|
{{ . }}
|
||||||
{{ end }}">
|
{{ end }}">
|
||||||
{{ partial "hooks/after-body-start" . }}
|
{{ partial "hooks/after-body-start.html" . }}
|
||||||
{{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
|
{{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
|
||||||
{{ block "header" . }}{{ end }}
|
{{ block "header" . }}{{ end }}
|
||||||
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
|
<main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
|
||||||
|
@ -113,7 +113,7 @@
|
||||||
|
|
||||||
{{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
|
{{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
|
||||||
|
|
||||||
{{ partial "hooks/before-body-end" . }}
|
{{ partial "hooks/before-body-end.html" . }}
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,23 +1,30 @@
|
||||||
<header class="flex-none w-100">
|
<header class="flex-none w-100">
|
||||||
{{ if .Params.categories }}
|
{{ if in (slice "functions" "methods") .Type }}
|
||||||
{{ range .Params.categories }}
|
{{ with .FirstSection }}
|
||||||
<a href="{{ "/categories/" | relLangURL }}{{ . | urlize }}" class="f6 fw8 mb0 link mid-gray dim mr3">
|
<a href="{{ .RelPermalink }}" class="f6 fw8 mb0 link mid-gray dim mr3">
|
||||||
{{ humanize . | upper }}
|
{{ humanize .Title | upper }}
|
||||||
</a>
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{end}}
|
{{ with .CurrentSection }}
|
||||||
|
<a href="{{ .RelPermalink }}" class="f6 fw8 mb0 link mid-gray dim mr3">
|
||||||
|
{{ humanize .Title | upper }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ range .Params.categories }}
|
||||||
|
<a href="{{ "/categories/" | relLangURL }}{{ . | urlize }}" class="f6 fw8 mb0 link mid-gray dim mr3">
|
||||||
|
{{ humanize . | upper }}
|
||||||
|
</a>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
<h1 class="lh-title mb3 mv0 pt3 primary-color-dark">
|
<h1 class="lh-title mb3 mv0 pt3 primary-color-dark">
|
||||||
{{- if eq .Section "functions" -}}
|
{{ .Title }}
|
||||||
{{ .LinkTitle }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ .Title }}
|
|
||||||
{{- end -}}
|
|
||||||
</h1>
|
</h1>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<aside class="bt bw1 pt3 mt2 mid-gray b--mid-gray fn w-100">
|
<aside class="bt bw1 pt3 mt2 mid-gray b--mid-gray fn w-100">
|
||||||
{{ with .Params.description }}
|
{{ with .Params.description }}
|
||||||
<div class="f4 fw4 lh-copy">
|
<div class="mb4 f4 fw4 lh-copy">
|
||||||
{{ . | markdownify }}
|
{{ . | markdownify }}
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
@ -31,7 +38,11 @@
|
||||||
<img src="{{ . }}" alt="Featured Image for {{ $.Title }}" class="mw-100">
|
<img src="{{ . }}" alt="Featured Image for {{ $.Title }}" class="mw-100">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<div class="prose prose-{{ .Type }}" id="prose">
|
<div class="prose" id="prose">
|
||||||
{{- partial "docs/functions-signature.html" . -}}
|
<div class="mb4">
|
||||||
|
{{- partial "docs/functions-signatures.html" . -}}
|
||||||
|
{{- partial "docs/functions-return-type.html" . -}}
|
||||||
|
{{- partial "docs/functions-aliases.html" . -}}
|
||||||
|
</div>
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -2,26 +2,24 @@
|
||||||
<article class="w-100 ph4 pb5 pb6-ns pt1 pt5-ns">
|
<article class="w-100 ph4 pb5 pb6-ns pt1 pt5-ns">
|
||||||
<div class="flex-l">
|
<div class="flex-l">
|
||||||
|
|
||||||
<div class="order-2 w-100 w-20-l ph5-m ph0-l mb4 sticky">
|
<div class="order-0 w-20 dn db-l">
|
||||||
{{- partial "toc.html" . -}}
|
{{ partial "nav-links-docs.html" . }}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="order-1 flex-grow-1 ph0 ph5-ns mt0-ns mid-gray nested-copy-line-height no-underline nested-links nested-img nested-copy-seperator nested-blockquote">
|
||||||
<div class="order-1 w-60-l mw7 ph0 ph5-ns mid-gray nested-copy-line-height no-underline nested-links nested-img nested-copy-seperator nested-blockquote mt0-ns" style="flex-grow:1;">
|
<div style="max-width: 40rem;" class="documentation-copy">
|
||||||
<div class="documentation-copy center measure-wide-l">
|
<div id="readout" class="fixed right-0 bottom-0"></div>
|
||||||
<div id="readout" class="fixed right-0 bottom-0">
|
|
||||||
</div>
|
|
||||||
{{ .Render "page" }}
|
{{ .Render "page" }}
|
||||||
{{ partial "related.html" . }}
|
{{ partial "related.html" . }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="order-0 w-20 dn db-l">
|
<div id="right-sidebar" class="order-2 w-20 dn db-l sticky pt2">
|
||||||
{{ partial "nav-links-docs.html" . }}
|
{{ partial "right-sidebar.html" . }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<div class="w-100 bg-light-gray">
|
<div id="page-footer" class="w-100 bg-light-gray">
|
||||||
<div class="mw7 pa4 center nested-lh-copy lh-copy">
|
<div class="mw7 pa4 center nested-lh-copy lh-copy">
|
||||||
{{ partial "docs/page-meta-data.html" . }}
|
{{ partial "docs/page-meta-data.html" . }}
|
||||||
{{ partial "page-edit.html" . }}
|
{{ partial "page-edit.html" . }}
|
||||||
|
|
|
@ -1,27 +1,27 @@
|
||||||
{{ define "header" }}
|
{{ define "header" }}
|
||||||
{{ partial "hero" . }}
|
{{ partial "hero.html" . }}
|
||||||
{{ partial "boxes-small-news" . }}
|
{{ partial "boxes-small-news.html" . }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<section class="w-100 ph4 ph5-ns pv4">
|
<section class="w-100 ph4 ph5-ns pv4">
|
||||||
{{- partial "home-page-sections/features-icons" . -}}
|
{{- partial "home-page-sections/features-icons.html" . -}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{{ partial "home-page-sections/sponsors.html" (dict "cx" . "gtag" "home" ) }}
|
{{ partial "home-page-sections/sponsors.html" (dict "cx" . "gtag" "home" ) }}
|
||||||
|
|
||||||
{{- partial "home-page-sections/features-single" . -}}
|
{{- partial "home-page-sections/features-single.html" . -}}
|
||||||
|
|
||||||
{{- partial "home-page-sections/showcase.html" . -}}
|
{{- partial "home-page-sections/showcase.html" . -}}
|
||||||
|
|
||||||
<section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-white bb bt b--light-gray">
|
<section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-white bb bt b--light-gray">
|
||||||
{{- partial "home-page-sections/installation" . -}}
|
{{- partial "home-page-sections/installation.html" . -}}
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-accent-color-dark">
|
<section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-accent-color-dark">
|
||||||
{{- partial "home-page-sections/tweets" . -}}
|
{{- partial "home-page-sections/tweets.html" . -}}
|
||||||
</section>
|
</section>
|
||||||
<section class="w-100 ph4 ph5-ns pt4 pb5 mid-gray bg-primary-color-light bb bt b--light-gray ">
|
<section class="w-100 ph4 ph5-ns pt4 pb5 mid-gray bg-primary-color-light bb bt b--light-gray ">
|
||||||
{{- partial "home-page-sections/open-source-involvement" . -}}
|
{{- partial "home-page-sections/open-source-involvement.html" . -}}
|
||||||
</section>
|
</section>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -10,32 +10,61 @@
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<!-- TODO: May be a good idea in this case to add monthly archives -->
|
|
||||||
|
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
{{/* [wip] add archive lists
|
|
||||||
<div class="w-100 w-20-ns dn">
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="#">
|
|
||||||
archive section
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div> */}}
|
|
||||||
|
|
||||||
{{ $interior_classes := $.Site.Params.flex_box_interior_classes }}
|
{{ $interior_classes := $.Site.Params.flex_box_interior_classes }}
|
||||||
<section class="flex-ns flex-wrap justify-between w-100 w-80-nsTK v-top">
|
<section class="flex-ns flex-wrap justify-between w-100 w-80-nsTK v-top">
|
||||||
{{ $paginator := .Paginate (.Pages | lang.Merge (where .Sites.First.RegularPages "Section" .Section)) -}}
|
|
||||||
{{ range $paginator.Pages }}
|
{{ $news_items := slice }}
|
||||||
{{ partial "boxes-section-summaries" (dict "context" . "classes" $interior_classes "fullcontent" false) }}
|
|
||||||
|
{{/* Get releases from GitHub. */}}
|
||||||
|
{{ $u := "https://api.github.com/repos/gohugoio/hugo/releases" }}
|
||||||
|
{{ $releases := partial "inline/get-remote-data.html" $u }}
|
||||||
|
{{ $releases = where $releases "draft" false }}
|
||||||
|
{{ $releases = where $releases "prerelease" false }}
|
||||||
|
{{ range $releases | first 20 }}
|
||||||
|
{{ $ctx := dict
|
||||||
|
"Date" (.published_at | time.AsTime)
|
||||||
|
"Title" (printf "Release %s" .name)
|
||||||
|
"Permalink" .html_url
|
||||||
|
"Section" "news"
|
||||||
|
"Summary" ""
|
||||||
|
}}
|
||||||
|
{{ $news_items = $news_items | append $ctx }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Get content pages from news section. */}}
|
||||||
|
{{ range .Pages }}
|
||||||
|
{{ $ctx := dict
|
||||||
|
"Date" .Date
|
||||||
|
"Title" .Title
|
||||||
|
"RelPermalink" .RelPermalink
|
||||||
|
"Section" "news"
|
||||||
|
"Summary" .Summary
|
||||||
|
"Params" (dict "description" .Description)
|
||||||
|
}}
|
||||||
|
{{ $news_items = $news_items | append $ctx }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Sort by date (descending) and render. */}}
|
||||||
|
{{ range sort $news_items "Date" "desc" }}
|
||||||
|
{{ partial "boxes-section-summaries.html" (dict "context" . "classes" $interior_classes "fullcontent" false) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
<div class="nested-list-reset nested-links">
|
|
||||||
{{/* pagination.html: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/template_embedded.go#L117 */}}
|
|
||||||
{{ template "_internal/pagination.html" . }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ define "partials/inline/get-remote-data.html" }}
|
||||||
|
{{ $u := . }}
|
||||||
|
{{ $r := "" }}
|
||||||
|
{{ with $r = resources.GetRemote $u }}
|
||||||
|
{{ with .Err }}
|
||||||
|
{{ errorf "%s" . }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "Unable to get remote resource %q" $u }}
|
||||||
|
{{ end }}
|
||||||
|
{{ return ($r | transform.Unmarshal) }}
|
||||||
|
{{ end }}
|
||||||
|
|
|
@ -34,9 +34,6 @@
|
||||||
Go to <a href="https://github.com/gohugoio/hugo/releases" class="link primary-color dim">Hugo Releases</a> for the release downloads.
|
Go to <a href="https://github.com/gohugoio/hugo/releases" class="link primary-color dim">Hugo Releases</a> for the release downloads.
|
||||||
</p>
|
</p>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<!--
|
|
||||||
NOTE: Removed to test builds without it.
|
|
||||||
partial "components/author-github-data" (dict "context" . "size" "110") -->
|
|
||||||
|
|
||||||
<div class="nested-links mt4">
|
<div class="nested-links mt4">
|
||||||
{{- partial "previous-next-links-in-section.html" . -}}
|
{{- partial "previous-next-links-in-section.html" . -}}
|
||||||
|
|
|
@ -1,35 +1,46 @@
|
||||||
<div class="relative {{ .classes }} weight-{{ .context.Weight }}">
|
<div class="relative {{ .classes }} weight-{{ .context.Weight }}">
|
||||||
|
|
||||||
<div class="bg-white mb2 pa3 pa4-l gray">
|
<div class="bg-white mb2 pa3 pa4-l gray">
|
||||||
|
|
||||||
|
{{ $href := .context.RelPermalink }}
|
||||||
{{ if eq .context.Section "news" }}
|
{{ if eq .context.Section "news" }}
|
||||||
<date class="f6 db" datetime="{{ .Date.Format "2006-01-02T15:04:05Z07:00" }}">
|
{{ $href = .context.Permalink }}
|
||||||
|
<time class="f6 db" datetime="{{ .context.Date.Format `2006-01-02T15:04:05Z07:00` }}">
|
||||||
{{ .context.Date.Format "January 2, 2006" }}
|
{{ .context.Date.Format "January 2, 2006" }}
|
||||||
</date>
|
</time>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
<h1 class="near-black f3">
|
<h1 class="near-black f3">
|
||||||
<a href="{{ .context.RelPermalink }}" class="link primary-color dim">
|
<a href="{{ $href }}" class="link primary-color dim">
|
||||||
{{- if eq .context.Section "functions" -}}
|
|
||||||
{{ .context.LinkTitle }}
|
|
||||||
{{- else -}}
|
|
||||||
{{ .context.Title }}
|
{{ .context.Title }}
|
||||||
{{- end -}}
|
|
||||||
</a>
|
</a>
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<div class="lh-copy links">
|
<div class="lh-copy links">
|
||||||
{{ if .context.Params.description }}
|
{{ if eq .context.Section "commands" }}
|
||||||
|
{{ replaceRE `(?s).*?##\s.*?\n\n(.*?)\n.*` "$1" .context.RawContent }}
|
||||||
|
{{ else }}
|
||||||
|
|
||||||
|
{{ if in (slice "functions" "methods") .context.Type }}
|
||||||
|
{{ with $signature := index .context.Params.action.signatures 0 }}
|
||||||
|
{{ if $.context.Params.action.returnType }}
|
||||||
|
{{ $signature = printf "%s ⟼ %s" $signature $.context.Params.action.returnType }}
|
||||||
|
{{ end }}
|
||||||
|
<pre class="f6 mb3 ph3 pv2 bg-light-gray overflow-x-auto">
|
||||||
|
{{- $signature -}}
|
||||||
|
</pre>
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if .context.Params.description }}
|
||||||
{{ .context.Params.description | markdownify }}
|
{{ .context.Params.description | markdownify }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
{{ .context.Summary }}
|
{{ .context.Summary }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
<a href="{{ $href }}" class="f6 mt2 db link primary-color dim">
|
||||||
<a href="{{ .context.RelPermalink }}" class="f6 mt2 db link primary-color dim">
|
Read More »
|
||||||
Read More »
|
</a>
|
||||||
</a>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,18 +1 @@
|
||||||
<section class="relative w-100 bg-black white">
|
{{/* Empty for now. */}}
|
||||||
<div class="flex flex-wrap w-90-l center center mw9">
|
|
||||||
<!-- <a href="/news/" class="link accent-color tr-ns f6 w-100 w-50-m w-10-l bg-animate hover-bg-accent-color hover-white pv3 pv4-l ph3 ph4-l dib">
|
|
||||||
Latest News:
|
|
||||||
</a> -->
|
|
||||||
{{ range first 4 ( sort (where .Site.RegularPages "Section" "news") "Date" "desc" ) }}
|
|
||||||
<!-- only show 2 boxes on mobile -->
|
|
||||||
{{ $.Scratch.Add "i" 1 }}{{ $i := $.Scratch.Get "i" }}
|
|
||||||
<a href="{{ .RelPermalink }}" class="link lh-copy light-gray f6 w-100 w-50-m w-25-l bg-animate hover-bg-accent-color hover-white pv3 pv4-ns ph3 ph4-ns{{ if ge $i 3 }} dn dib-l{{ else }} dib{{ end }}">
|
|
||||||
<span class="f6 gray pb1 db">
|
|
||||||
{{ .Date.Format "January 2, 2006" }}
|
|
||||||
</span>
|
|
||||||
{{ .Params.description | markdownify | truncate 100 "…"}}
|
|
||||||
</a>
|
|
||||||
{{ end }}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
12
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/docs/functions-aliases.html
generated
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{{- with .Params.action.aliases }}
|
||||||
|
{{- $label := "Alias" }}
|
||||||
|
{{- if gt (len .) 1 }}
|
||||||
|
{{- $label = "Aliases" }}
|
||||||
|
{{- end }}
|
||||||
|
<p class="fw7 primary-color-dark">{{ $label }}</p>
|
||||||
|
{{- range . }}
|
||||||
|
<pre class="f5 ph3 pv2 bg-light-gray" style="border-left:4px solid #0594CB;">
|
||||||
|
{{- . -}}
|
||||||
|
</pre>
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
6
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/docs/functions-return-type.html
generated
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{{- with .Params.action.returnType }}
|
||||||
|
<p class="fw7 primary-color-dark">Returns</p>
|
||||||
|
<pre class="f5 ph3 pv2 bg-light-gray" style="border-left:4px solid #0594CB;">
|
||||||
|
{{- . -}}
|
||||||
|
</pre>
|
||||||
|
{{- end -}}
|
|
@ -1,11 +0,0 @@
|
||||||
{{ if isset .Params "signature" -}}
|
|
||||||
{{- with .Params.signature }}
|
|
||||||
<h2 class="minor mb1 pt4 primary-color-dark">Syntax</h2>
|
|
||||||
{{- range . }}
|
|
||||||
<pre class="f5 mb4 ph3 pv2 bg-light-gray" style="border-left:4px solid #0594CB;">
|
|
||||||
{{- . -}}
|
|
||||||
</pre>
|
|
||||||
{{- end }}
|
|
||||||
{{- end -}}
|
|
||||||
{{ end }}
|
|
||||||
{{/* The inline style overrides `pre` styling defaults */}}
|
|
|
@ -1,11 +1,11 @@
|
||||||
{{- with .Params.function.signatures }}
|
{{- with .Params.action.signatures }}
|
||||||
<h2 class="minor mb1 pt4 primary-color-dark">Syntax</h2>
|
<p class="fw7 primary-color-dark">Syntax</p>
|
||||||
{{- range . }}
|
{{- range . }}
|
||||||
{{- $signature := . }}
|
{{- $signature := . }}
|
||||||
{{- if $.Params.function.returnType }}
|
{{- if $.Params.function.returnType }}
|
||||||
{{- $signature = printf "%s ⟼ %s" . $.Params.function.returnType }}
|
{{- $signature = printf "%s ⟼ %s" . $.Params.function.returnType }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<pre class="f5 mb4 ph3 pv2 bg-light-gray overflow-x-auto" style="border-left:4px solid #0594CB;">
|
<pre class="f5 ph3 pv2 bg-light-gray overflow-x-auto" style="border-left:4px solid #0594CB;">
|
||||||
{{- $signature -}}
|
{{- $signature -}}
|
||||||
</pre>
|
</pre>
|
||||||
{{- end }}
|
{{- end }}
|
|
@ -1,4 +1,4 @@
|
||||||
{{ with .Site.GoogleAnalytics }}
|
{{ with site.Config.Services.GoogleAnalytics.ID }}
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
|
<script async src="https://www.googletagmanager.com/gtag/js?id={{ . }}"></script>
|
||||||
<script>
|
<script>
|
||||||
window.dataLayer = window.dataLayer || [];
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
<div class="flex-ns flex-wrap justify-between">
|
<div class="flex-ns flex-wrap justify-between">
|
||||||
|
|
||||||
|
{{ if $.Site.Data.homepagetweets }}
|
||||||
{{ range first 4 (sort $.Site.Data.homepagetweets.tweet "date" "desc" ) }}
|
{{ range first 4 (sort $.Site.Data.homepagetweets.tweet "date" "desc" ) }}
|
||||||
<div class="homepage-tweet relative {{ $interior_classes }} br1 mid-gray pv3 nested-links shadow-5">
|
<div class="homepage-tweet relative {{ $interior_classes }} br1 mid-gray pv3 nested-links shadow-5">
|
||||||
<div class="absolute top-0 left-0 ma2 o-10">
|
<div class="absolute top-0 left-0 ma2 o-10">
|
||||||
|
@ -21,5 +22,6 @@
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1 +1,7 @@
|
||||||
{{/* Deliberately empty */}}
|
{{ if .Page.Store.Get "hasMermaid" }}
|
||||||
|
<script type="module" async>
|
||||||
|
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@9/+esm';
|
||||||
|
|
||||||
|
mermaid.initialize({ startOnLoad: true });
|
||||||
|
</script>
|
||||||
|
{{ end }}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{ partial "nav-links" .}}
|
{{ partial "nav-links.html" .}}
|
||||||
<div class="dn-l">
|
<div class="dn-l">
|
||||||
{{ partial "nav-button-open" .}}
|
{{ partial "nav-button-open.html" .}}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
|
@ -39,4 +39,4 @@
|
||||||
{{ end }}{{ end }}
|
{{ end }}{{ end }}
|
||||||
|
|
||||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||||
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
{{- with site.Params.social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||||
|
|
|
@ -17,6 +17,6 @@
|
||||||
{{- end }}
|
{{- end }}
|
||||||
<meta name="twitter:title" content="{{ .Title }}"/>
|
<meta name="twitter:title" content="{{ .Title }}"/>
|
||||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
|
||||||
{{ with .Site.Social.twitter -}}
|
{{ with site.Params.social.twitter -}}
|
||||||
<meta name="twitter:site" content="@{{ . }}"/>
|
<meta name="twitter:site" content="@{{ . }}"/>
|
||||||
{{ end -}}
|
{{ end -}}
|
|
@ -16,13 +16,15 @@
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<!-- TODO: May be a good idea in this case to add monthly archives -->
|
|
||||||
|
|
||||||
<div class="flex flex-wrap">
|
<div class="flex flex-wrap">
|
||||||
{{ $interior_classes := .context.Site.Params.flex_box_interior_classes }}
|
{{ $interior_classes := .context.Site.Params.flex_box_interior_classes }}
|
||||||
<section class="flex-ns flex-wrap justify-between w-100">
|
<section class="flex-ns flex-wrap justify-between w-100">
|
||||||
{{ range $section_to_display }}
|
{{ $pages := $section_to_display }}
|
||||||
{{ partial "boxes-section-summaries" (dict "context" . "classes" $interior_classes "fullcontent" true) }}
|
{{ if in (slice "functions" "methods") $.context.Type }}
|
||||||
|
{{ $pages = $.context.Pages }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range $pages }}
|
||||||
|
{{ partial "boxes-section-summaries.html" (dict "context" . "classes" $interior_classes "fullcontent" true) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,9 +1,22 @@
|
||||||
{{ $related := .Site.RegularPages.Related . | first 5 }}
|
{{- $heading := "See also" }}
|
||||||
{{ with $related }}
|
{{- $related := site.RegularPages.Related . | first 5 }}
|
||||||
<h2>See Also</h2>
|
|
||||||
<ul>
|
{{- if in (slice "functions" "methods") .Type }}
|
||||||
{{ range . }}
|
{{- $related = slice }}
|
||||||
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
{{- range .Params.action.related }}
|
||||||
{{ end }}
|
{{- with site.GetPage (lower .) }}
|
||||||
</ul>
|
{{- $related = $related | append . }}
|
||||||
{{ end }}
|
{{- else }}
|
||||||
|
{{- errorf "The 'related' partial was unable to get page %s" . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with $related }}
|
||||||
|
<h2>{{ $heading }}</h2>
|
||||||
|
<ul>
|
||||||
|
{{- range . }}
|
||||||
|
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
|
{{- end }}
|
||||||
|
|
29
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/right-sidebar.html
generated
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
<aside class="right-0 f6 pv4 pv0-ns ph4-l nested-list-reset nested-copy-line-height">
|
||||||
|
<div class="nested-links">
|
||||||
|
{{- partial "previous-next-links-in-section.html" . }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{- /* Table of contents is visible if toc = true in front matter. */}}
|
||||||
|
{{- if .Params.toc }}
|
||||||
|
<div class="nested-links">
|
||||||
|
<p class="f5 fw8 mid-gray mb0">On this page</p>
|
||||||
|
{{- .TableOfContents }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Section menu for single pages is visible if showSectionMenu = true in top level section page. */}}
|
||||||
|
{{- if .FirstSection.Params.showSectionMenu }}
|
||||||
|
{{- with .CurrentSection.RegularPages }}
|
||||||
|
<p class="mb0"><a class="link f5 fw8 mid-gray" href="{{ $.CurrentSection.RelPermalink }}">In this section</a></p>
|
||||||
|
<nav>
|
||||||
|
<ul>
|
||||||
|
{{- range . }}
|
||||||
|
<li>
|
||||||
|
<a style="padding: 2px 5px;" class="dib link hover-bg-black-40 hover-white blue nl1" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||||
|
</li>
|
||||||
|
{{- end }}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</aside>
|
|
@ -1,6 +1,6 @@
|
||||||
{{/*
|
{{/*
|
||||||
Disable Twitter for now as we lost access to the account.
|
Disable Twitter for now as we lost access to the account.
|
||||||
with .Site.Social.twitter }}
|
with site.Params.social.twitter }}
|
||||||
<a href="https://twitter.com/intent/follow?screen_name={{ . }}" title="Follow on Twitter" class="link-transition twitter link dib z-999 pt3 pt0-l mr2">
|
<a href="https://twitter.com/intent/follow?screen_name={{ . }}" title="Follow on Twitter" class="link-transition twitter link dib z-999 pt3 pt0-l mr2">
|
||||||
{{ partial "svg/twitter.svg" (dict "size" "32px") }}
|
{{ partial "svg/twitter.svg" (dict "size" "32px") }}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!-- TOCs need to be declared explicitly in the front matter of content/*.md -->
|
|
||||||
<aside class="fixed-lTK mw5-l right-0 f6 bl-l b--moon-gray pv4 pv0-ns ph4-l nested-list-reset nested-links nested-copy-line-height">
|
|
||||||
{{ if .Params.toc }}
|
|
||||||
<p class="b">What's on this Page</p>
|
|
||||||
{{ .TableOfContents }}
|
|
||||||
{{ end }}
|
|
||||||
{{- partial "previous-next-links-in-section.html" . -}}
|
|
||||||
|
|
||||||
{{- if .Params.godocref -}}
|
|
||||||
<a target="_blank" class="tooltip right godoc-link" data-tooltip="See the related Godocs for {{.Title }}" href="{{.Params.godocref}}" >
|
|
||||||
</a>
|
|
||||||
{{- end -}}
|
|
||||||
</aside>
|
|
|
@ -1,24 +1,101 @@
|
||||||
{{ $langs := (slice "yaml" "toml" "json") }}
|
{{- /*
|
||||||
<div class="code relative" {{ with .Get "file" }}id="{{ . | urlize}}"{{ end }}>
|
Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
<div class="code-nav flex flex-nowrap items-stretch">
|
|
||||||
{{- with .Get "file" -}}
|
|
||||||
<div class="san-serif f6 dib lh-solid pl2 pv2 mr2">{{ . }}.</div>
|
|
||||||
{{- end -}}
|
|
||||||
{{ range $langs }}
|
|
||||||
<button data-toggle-tab="{{ . }}" class="tab-button {{ cond (eq . "yaml") "active" ""}} ba san-serif f6 dib lh-solid ph2 pv2">{{ . }}</button>
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
<div class="tab-content">
|
|
||||||
{{ range $langs }}
|
|
||||||
<div data-pane="{{ . }}" class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" ""}}">
|
|
||||||
{{ highlight ($.Inner | transform.Remarshal . | safeHTML) . ""}}
|
|
||||||
</div>
|
|
||||||
{{ if ne ($.Get "copy") "false" }}
|
|
||||||
<button class="needs-js copy copy-toggle bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button">
|
|
||||||
</button>
|
|
||||||
{{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
|
|
||||||
{{end}}
|
|
||||||
{{ end }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
@param {string} [config] The section of site.Data.docs.config to render.
|
||||||
|
@param {bool} [copy=false] If true, display a copy to clipboard button.
|
||||||
|
@param {string} [file] The file name to display above the rendered code.
|
||||||
|
@param {bool} [fm=false] If true, render the code as front matter.
|
||||||
|
@param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config.
|
||||||
|
|
||||||
|
@returns {template.HTML}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $config := "" }}
|
||||||
|
{{- $dataKey := "" }}
|
||||||
|
{{- $copy := false }}
|
||||||
|
{{- $file := "" }}
|
||||||
|
{{- $fm := false }}
|
||||||
|
{{- $skipHeader := false }}
|
||||||
|
|
||||||
|
{{- /* Get parameters. */}}
|
||||||
|
{{- $config = .Get "config" }}
|
||||||
|
{{- $dataKey = .Get "dataKey" }}
|
||||||
|
{{- $file = .Get "file" }}
|
||||||
|
{{- if in (slice "false" false 0) (.Get "copy") }}
|
||||||
|
{{- $copy = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "copy") }}
|
||||||
|
{{- $copy = true }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if in (slice "false" false 0) (.Get "fm") }}
|
||||||
|
{{- $fm = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "fm") }}
|
||||||
|
{{- $fm = true }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if in (slice "false" false 0) (.Get "skipHeader") }}
|
||||||
|
{{- $skipHeader = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "skipHeader") }}
|
||||||
|
{{- $skipHeader = true }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Define constants. */}}
|
||||||
|
{{- $delimiters := dict "toml" "+++" "yaml" "---" }}
|
||||||
|
{{- $langs := slice "yaml" "toml" "json" }}
|
||||||
|
{{- $placeHolder := "#-hugo-placeholder-#" }}
|
||||||
|
|
||||||
|
{{- /* Render. */}}
|
||||||
|
{{- $code := "" }}
|
||||||
|
{{- if $config }}
|
||||||
|
{{- $file = $file | default "hugo" }}
|
||||||
|
{{- $sections := (split $config ".") }}
|
||||||
|
{{- $configSection := index $.Site.Data.docs.config $sections }}
|
||||||
|
{{- $code = dict $sections $configSection }}
|
||||||
|
{{- if $skipHeader }}
|
||||||
|
{{- $code = $configSection }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if $dataKey }}
|
||||||
|
{{- $file = $file | default $dataKey }}
|
||||||
|
{{- $sections := (split $dataKey ".") }}
|
||||||
|
{{- $code = index $.Site.Data.docs $sections }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $code = $.Inner }}
|
||||||
|
{{- end }}
|
||||||
|
<div class="code relative" {{ with $file }}id="{{ . | urlize }}"{{ end }}>
|
||||||
|
<div class="code-nav flex flex-nowrap items-stretch">
|
||||||
|
{{- with $file }}
|
||||||
|
<div class="san-serif f6 dib lh-solid pl2 pv2 mr2">
|
||||||
|
{{ . }}{{ if not $fm }}.{{ end }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
{{- range $langs }}
|
||||||
|
<button
|
||||||
|
data-toggle-tab="{{ . }}"
|
||||||
|
class="tab-button {{ cond (eq . "yaml") "active" "" }} ba san-serif f6 dib lh-solid ph2 pv2">
|
||||||
|
{{ . }}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
|
<div class="tab-content">
|
||||||
|
{{- range $langs }}
|
||||||
|
<div
|
||||||
|
data-pane="{{ . }}"
|
||||||
|
class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" "" }}">
|
||||||
|
{{- $hCode := $code | transform.Remarshal . }}
|
||||||
|
{{- if and $fm (in (slice "toml" "yaml") .) }}
|
||||||
|
{{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $hCode = $hCode | replaceRE `\n+` "\n" }}
|
||||||
|
{{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
|
||||||
|
</div>
|
||||||
|
{{- if $copy }}
|
||||||
|
<button
|
||||||
|
class="needs-js copy copy-toggle bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2"
|
||||||
|
title="Copy this code to your clipboard."
|
||||||
|
data-clipboard-action="copy"
|
||||||
|
aria-label="copy button"></button>
|
||||||
|
{{- /* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,15 +1,35 @@
|
||||||
<div class="code relative bg-primary-color moon-gray" id="{{.Get "file" | urlize}}">
|
{{- /*
|
||||||
{{- with .Get "file" -}}
|
Renders syntax highlighted code.
|
||||||
<div class="filename san-serif f6 dib lh-solid pl2 pv2">{{.}}</div>
|
|
||||||
{{- end -}}
|
|
||||||
|
|
||||||
{{ if ne (.Get "copy") "false" }}
|
@param {bool} [copy=false] If true, display a copy to clipboard button.
|
||||||
<button class="needs-js copy bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button">
|
@param {string} [file] The file name to display above the rendered code.
|
||||||
</button>
|
@param {string} [lang] The code language of the inner content.
|
||||||
{{/* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */}}
|
|
||||||
{{end}}
|
|
||||||
<div class="code-copy-content nt3" {{with .Get "download"}}id="{{.}}"{{end}}>
|
|
||||||
{{- .Inner -}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
@returns {template.HTML}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Get parameters. */}}
|
||||||
|
{{- $copy := false }}
|
||||||
|
{{- if in (slice "false" false 0) (.Get "copy") }}
|
||||||
|
{{- $copy = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "copy")}}
|
||||||
|
{{- $copy = true }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $file := or (.Get "file") " " }}
|
||||||
|
{{- $lang := or (.Get "lang") (path.Ext $file | strings.TrimPrefix ".") "text" }}
|
||||||
|
|
||||||
|
{{- /* Use the go-html-template Chroma lexer for HTML. */}}
|
||||||
|
{{- if eq $lang "html" }}
|
||||||
|
{{- $lang = "go-html-template" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Render. */}}
|
||||||
|
<div class="code relative" id="{{ $file | urlize }}">
|
||||||
|
<div class="f6 dib lh-solid pl2 pv2">{{ $file | htmlUnescape }}</div>
|
||||||
|
{{- if $copy }}
|
||||||
|
<button class="needs-js copy bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button"></button>
|
||||||
|
{{- end }}
|
||||||
|
<div class="code-copy-content nt3">
|
||||||
|
{{- highlight (trim .Inner "\n\r") $lang }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,18 +1,33 @@
|
||||||
<table class="utils-table">
|
{{ $package := (index .Params 0) }}
|
||||||
<thead>
|
{{ $listname := (index .Params 1) }}
|
||||||
<tr>
|
{{ $list := (index (index .Site.Data.docs $package) $listname) }}
|
||||||
<td class="col-title">Title</td>
|
{{ $fields := after 2 .Params }}
|
||||||
<td class="col-author">Author</td>
|
|
||||||
<td class="col-date">Date</td>
|
|
||||||
</tr>
|
<table class="table table-bordered">
|
||||||
</thead>
|
<tr>
|
||||||
<tbody>
|
{{ range $fields }}
|
||||||
{{ range $ind, $art := $.Site.Data.articles.article }}
|
{{ $s := . }}
|
||||||
<tr>
|
{{ if eq $s "_key" }}
|
||||||
<td><a href="{{$art.url}}" target="_blank">{{$art.title | markdownify }}</a></td>
|
{{ $s = "Type" }}
|
||||||
<td>{{ $art.author | markdownify }}</td>
|
{{ end }}
|
||||||
<td>{{ $art.date }}</td>
|
<th>{{ $s }}</th>
|
||||||
</tr>
|
{{ end }}
|
||||||
{{ end }}
|
</tr>
|
||||||
</tbody>
|
{{ range $k1, $v1 := $list }}
|
||||||
|
<tr>
|
||||||
|
{{ range $k2, $v2 := . }}
|
||||||
|
{{ $.Scratch.Set $k2 $v2 }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range $fields }}
|
||||||
|
{{ $s := "" }}
|
||||||
|
{{ if eq . "_key" }}
|
||||||
|
{{ $s = $k1 }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $s = $.Scratch.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
<td>{{ $s }}</td>
|
||||||
|
{{ end }}
|
||||||
|
</tr>
|
||||||
|
{{ end }}
|
||||||
</table>
|
</table>
|
14
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/deprecated-in.html
generated
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||||
|
|
||||||
|
{{ with .Get 0 }}
|
||||||
|
{{ $version := printf "v%v" (strings.TrimLeft "vV" .) }}
|
||||||
|
{{ $href := printf "https://github.com/gohugoio/hugo/releases/tag/%s" $version }}
|
||||||
|
<aside>
|
||||||
|
<div class="admonition-content bl bw2 b--dark-red" >
|
||||||
|
<p>Deprecated in <a href="{{ $href }}">{{ $version }}</a></p>
|
||||||
|
{{ $.Inner }}
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "The %q shortcode requires a single positional parameter indicating version. See %s" .Name .Position }}
|
||||||
|
{{ end }}
|
|
@ -1,13 +0,0 @@
|
||||||
{{- $pathURL := .Get "pathURL" -}}
|
|
||||||
{{- $path := .Get "path" -}}
|
|
||||||
{{- $files := readDir $path -}}
|
|
||||||
<table>
|
|
||||||
<th>Size in bytes</th>
|
|
||||||
<th>Name</th>
|
|
||||||
{{- range $files }}
|
|
||||||
<tr>
|
|
||||||
<td>{{ .Size }}</td>
|
|
||||||
<td><a href="{{ $pathURL }}{{ .Name | relURL }}" target="_blank"> {{ .Name }}</a></td>
|
|
||||||
</tr>
|
|
||||||
{{- end }}
|
|
||||||
</table>
|
|
|
@ -1,11 +0,0 @@
|
||||||
{{ $file := .Get 0}}
|
|
||||||
{{ $filepath := $file }}
|
|
||||||
{{ $syntax := index (split $file ".") 1 }}
|
|
||||||
{{ $syntaxoverride := eq (len .Params) 2 }}
|
|
||||||
<div class="code-copy" id="{{$file | urlize}}">
|
|
||||||
<div class="code-copy-header"><div class="action-buttons"></div><span title="" class="filename">{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
|
|
||||||
<button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
|
|
||||||
<div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
|
|
||||||
</button>
|
|
||||||
<pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
|
|
||||||
</div>
|
|
|
@ -1,12 +0,0 @@
|
||||||
{{ $file := .Get 0}}
|
|
||||||
{{ $filepath := replace $file "static/" ""}}
|
|
||||||
{{ $syntax := index (split $file ".") 1 }}
|
|
||||||
{{ $syntaxoverride := eq (len .Params) 2 }}
|
|
||||||
<div class="code-copy" id="{{$file | urlize}}">
|
|
||||||
<div class="code-copy-header examplesite"><div class="action-buttons"></div><span class="filename"><i class="icon-website"></i>{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
|
|
||||||
<button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
|
|
||||||
<div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
|
|
||||||
</button>
|
|
||||||
<pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
|
|
||||||
<a role="button" target="_blank" href="{{$.Site.Params.ghdocsrepo}}{{$file}}" title="See {{$filepath}} source on GitHub" class="tooltip see-on-github" data-tooltip="See {{$filepath}} source on GitHub">Source<i class="icon-github"></i></a>
|
|
||||||
</div>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!-- Similar to exfile.html but *only* pulls the front matter from the example/content/*md -->
|
|
||||||
{{ $file := .Get 0}}
|
|
||||||
{{ $filepath := replace $file "static/" ""}}
|
|
||||||
{{ $syntax := index (split $file ".") 1 }}
|
|
||||||
{{ $syntaxoverride := eq (len .Params) 2 }}
|
|
||||||
<div class="code-copy" id="{{$file | urlize}}">
|
|
||||||
<div class="code-copy-header examplesite"><div class="action-buttons"></div><span title="" class="filename">{{$filepath}}</span><i class="icon-{{$syntax}} input"></i></div>
|
|
||||||
<button class="copy-button" title="Copy to clipboard" data-clipboard-snippet>
|
|
||||||
<div class="copy-text"><i class="icon-clipboard"></i> COPY</div>
|
|
||||||
</button>
|
|
||||||
<pre><code class="language-{{if $syntaxoverride}}{{.Get 1}}{{else}}{{$syntax}}{{end}}">{{- readFile $file -}}</code></pre>
|
|
||||||
<a role="button" target="_blank" href="{{$.Site.Params.ghdocsrepo}}{{$file}}" title="See {{$filepath}} on GitHub" class="see-on-github">Source<i class="icon-github"></i></a>
|
|
||||||
</div>
|
|
|
@ -1,4 +1,4 @@
|
||||||
<h4 class="minor mb1 pt2 primary-color-dark">Syntax</h4>
|
<h4 class="minor mb1 pt2 primary-color-dark">Syntax</h4>
|
||||||
<pre class="f5 mb4 ph3 pv2 bg-light-gray overflow-x-auto" style="border-left:4px solid #0594CB;">
|
<pre class="f5 mb4 ph3 pv2 bg-light-gray overflow-x-auto" style="border-left:4px solid #0594CB;">
|
||||||
{{- .Inner -}}
|
{{- .Inner -}}
|
||||||
</pre>
|
</pre>
|
|
@ -1,9 +0,0 @@
|
||||||
{{ range .Params }}
|
|
||||||
{{ if eq (substr . 0 1) "@" }}
|
|
||||||
<a href="//github.com/{{ substr . 1 }}">{{ . }}</a>
|
|
||||||
{{ else if eq (substr . 0 2) "0x" }}
|
|
||||||
<a href="//github.com/gohugoio/hugo/commit/{{ substr . 2 }}">{{ substr . 2 6 }}</a>
|
|
||||||
{{ else }}
|
|
||||||
<a href="//github.com/gohugoio/hugo/issues/{{ . }}">#{{ . }}</a>
|
|
||||||
{{ end }}
|
|
||||||
{{ end }}
|
|
|
@ -1 +0,0 @@
|
||||||
<a href="{{$.Site.Params.ghrepo}}" target="_blank">GitHub repository</a>
|
|
374
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/img.html
generated
Normal file
|
@ -0,0 +1,374 @@
|
||||||
|
{{- /*
|
||||||
|
Renders the given image using the given filter, if any.
|
||||||
|
|
||||||
|
@param {string} src The path to the image which must be a remote, page, or global resource.
|
||||||
|
@param {string} [filter] The filter to apply to the image (case-insensitive).
|
||||||
|
@param {string} [filterArgs] A comma-delimited list of arguments to pass to the filter.
|
||||||
|
@param {bool} [example=false] If true, renders a before/after example.
|
||||||
|
@param {int} [exampleWidth=384] Image width, in pixels, when rendering a before/after example.
|
||||||
|
|
||||||
|
@returns {template.HTML}
|
||||||
|
|
||||||
|
@examples
|
||||||
|
|
||||||
|
{{< img src="zion-national-park.jpg" >}}
|
||||||
|
|
||||||
|
{{< img src="zion-national-park.jpg" alt="Zion National Park" >}}
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="grayscale"
|
||||||
|
>}}
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="process"
|
||||||
|
filterArgs="resize 400x webp"
|
||||||
|
>}}
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="colorize"
|
||||||
|
filterArgs="180,50,20"
|
||||||
|
>}}
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="grayscale"
|
||||||
|
example=true
|
||||||
|
>}}
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="grayscale"
|
||||||
|
example=true
|
||||||
|
exampleWidth=400
|
||||||
|
>}}
|
||||||
|
|
||||||
|
When using the text filter, provide the arguments in this order:
|
||||||
|
|
||||||
|
0. The text
|
||||||
|
1. The horizontal offset, in pixels, relative to the left of the image (default 20)
|
||||||
|
2. The vertical offset, in pixels, relative to the top of the image (default 20)
|
||||||
|
3. The font size in pixels (default 64)
|
||||||
|
4. The line height (default 1.2)
|
||||||
|
5. The font color (default #ffffff)
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="images/examples/zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="Text"
|
||||||
|
filterArgs="Zion National Park,25,250,56"
|
||||||
|
example=true
|
||||||
|
>}}
|
||||||
|
|
||||||
|
When using the padding filter, provide all arguments in this order:
|
||||||
|
|
||||||
|
0. Padding top
|
||||||
|
1. Padding right
|
||||||
|
2. Padding bottom
|
||||||
|
3. Padding right
|
||||||
|
4. Canvas color
|
||||||
|
|
||||||
|
{{< img
|
||||||
|
src="images/examples/zion-national-park.jpg"
|
||||||
|
alt="Zion National Park"
|
||||||
|
filter="Padding"
|
||||||
|
filterArgs="20,50,20,50,#0705"
|
||||||
|
example=true
|
||||||
|
>}}
|
||||||
|
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $alt := "" }}
|
||||||
|
{{- $src := "" }}
|
||||||
|
{{- $filter := "" }}
|
||||||
|
{{- $filterArgs := slice }}
|
||||||
|
{{- $example := false }}
|
||||||
|
{{- $exampleWidth := 384 }}
|
||||||
|
|
||||||
|
{{- /* Default values to use with the text filter. */}}
|
||||||
|
{{ $textFilterOpts := dict
|
||||||
|
"xOffset" 20
|
||||||
|
"yOffset" 20
|
||||||
|
"fontSize" 64
|
||||||
|
"lineHeight" 1.2
|
||||||
|
"fontColor" "#ffffff"
|
||||||
|
"fontPath" "https://github.com/google/fonts/raw/main/apache/roboto/static/Roboto-Regular.ttf"
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{- /* Get and validate parameters. */}}
|
||||||
|
{{- with .Get "alt" }}
|
||||||
|
{{- $alt = .}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Get "src" }}
|
||||||
|
{{- $src = . }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a file parameter. See %s" .Name .Position }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Get "filter" }}
|
||||||
|
{{- $filter = . | lower }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- $validFilters := slice
|
||||||
|
"brightness" "colorbalance" "colorize" "contrast" "gamma" "gaussianblur"
|
||||||
|
"grayscale" "hue" "invert" "none" "opacity" "overlay" "padding" "pixelate"
|
||||||
|
"process" "saturation" "sepia" "sigmoid" "text" "unsharpmask"
|
||||||
|
}}
|
||||||
|
|
||||||
|
{{- with $filter }}
|
||||||
|
{{- if not (in $validFilters .) }}
|
||||||
|
{{- errorf "The filter passed to the %q shortcode is invalid. The filter must be one of %s. See %s" $.Name (delimit $validFilters ", " ", or ") $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Get "filterArgs" }}
|
||||||
|
{{- $filterArgs = split . "," }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "trim" "." " " }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if in (slice "false" false 0) (.Get "example") }}
|
||||||
|
{{- $example = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "example")}}
|
||||||
|
{{- $example = true }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Get "exampleWidth" }}
|
||||||
|
{{- $exampleWidth = . | int }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Get image. */}}
|
||||||
|
{{- $ctx := dict "page" .Page "src" $src "name" .Name "position" .Position }}
|
||||||
|
{{- $i := partial "inline/get-resource.html" $ctx }}
|
||||||
|
|
||||||
|
{{- /* Resize if rendering before/after examples. */}}
|
||||||
|
{{- if $example }}
|
||||||
|
{{- $i = $i.Resize (printf "%dx" $exampleWidth) }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Create filter. */}}
|
||||||
|
{{- $f := "" }}
|
||||||
|
{{- $ctx := dict "filter" $filter "args" $filterArgs "name" .Name "position" .Position }}
|
||||||
|
{{- if eq $filter "brightness" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Brightness (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "colorbalance" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 3) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage red" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage green" "argValue" (index $filterArgs 1) "min" -100 "max" 500) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage blue" "argValue" (index $filterArgs 2) "min" -100 "max" 500) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.ColorBalance (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }}
|
||||||
|
{{- else if eq $filter "colorize" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 3) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "hue" "argValue" (index $filterArgs 0) "min" 0 "max" 360) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "saturation" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 2) "min" 0 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Colorize (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }}
|
||||||
|
{{- else if eq $filter "contrast" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Contrast (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "gamma" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "gamma" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Gamma (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "gaussianblur" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.GaussianBlur (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "grayscale" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 0) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $f = images.Grayscale }}
|
||||||
|
{{- else if eq $filter "hue" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "shift" "argValue" (index $filterArgs 0) "min" -180 "max" 180) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Hue (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "invert" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 0) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $f = images.Invert }}
|
||||||
|
{{- else if eq $filter "opacity" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "opacity" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Opacity (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "overlay" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 3) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $ctx := dict "src" (index $filterArgs 0) "name" .Name "position" .Position }}
|
||||||
|
{{- $overlayImg := partial "inline/get-resource.html" $ctx }}
|
||||||
|
{{- $f = images.Overlay $overlayImg (index $filterArgs 1 | float ) (index $filterArgs 2 | float) }}
|
||||||
|
{{- else if eq $filter "padding" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 5) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $f = images.Padding
|
||||||
|
(index $filterArgs 0 | int)
|
||||||
|
(index $filterArgs 1 | int)
|
||||||
|
(index $filterArgs 2 | int)
|
||||||
|
(index $filterArgs 3 | int)
|
||||||
|
(index $filterArgs 4)
|
||||||
|
}}
|
||||||
|
{{- else if eq $filter "pixelate" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "size" "argValue" (index $filterArgs 0) "min" 0 "max" 1000) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Pixelate (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "process" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $f = images.Process (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "saturation" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" -100 "max" 500) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Saturation (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "sepia" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "percentage" "argValue" (index $filterArgs 0) "min" 0 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Sepia (index $filterArgs 0) }}
|
||||||
|
{{- else if eq $filter "sigmoid" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 2) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "midpoint" "argValue" (index $filterArgs 0) "min" 0 "max" 1) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "factor" "argValue" (index $filterArgs 1) "min" -10 "max" 10) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.Sigmoid (index $filterArgs 0) (index $filterArgs 1) }}
|
||||||
|
{{- else if eq $filter "text" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 1) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $ctx := dict "src" $textFilterOpts.fontPath "name" .Name "position" .Position }}
|
||||||
|
{{- $font := or (partial "inline/get-resource.html" $ctx) }}
|
||||||
|
{{- $fontSize := or (index $filterArgs 3 | int) $textFilterOpts.fontSize }}
|
||||||
|
{{- $lineHeight := math.Max (or (index $filterArgs 4 | float) $textFilterOpts.lineHeight) 1 }}
|
||||||
|
{{- $opts := dict
|
||||||
|
"x" (or (index $filterArgs 1 | int) $textFilterOpts.xOffset)
|
||||||
|
"y" (or (index $filterArgs 2 | int) $textFilterOpts.yOffset)
|
||||||
|
"size" $fontSize
|
||||||
|
"linespacing" (mul (sub $lineHeight 1) $fontSize)
|
||||||
|
"color" (or (index $filterArgs 5) $textFilterOpts.fontColor)
|
||||||
|
"font" $font
|
||||||
|
}}
|
||||||
|
{{- $f = images.Text (index $filterArgs 0) $opts }}
|
||||||
|
{{- else if eq $filter "unsharpmask" }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argsRequired" 3) }}
|
||||||
|
{{- template "validate-arg-count" $ctx }}
|
||||||
|
{{- $filterArgs = apply $filterArgs "float" "." }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "sigma" "argValue" (index $filterArgs 0) "min" 0 "max" 500) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "amount" "argValue" (index $filterArgs 1) "min" 0 "max" 100) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $ctx = merge $ctx (dict "argName" "threshold" "argValue" (index $filterArgs 2) "min" 0 "max" 1) }}
|
||||||
|
{{- template "validate-arg-value" $ctx }}
|
||||||
|
{{- $f = images.UnsharpMask (index $filterArgs 0) (index $filterArgs 1) (index $filterArgs 2) }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Apply filter. */}}
|
||||||
|
{{- $fi := $i }}
|
||||||
|
{{- with $f }}
|
||||||
|
{{- $fi = $i.Filter . }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Render. */}}
|
||||||
|
{{- if $example }}
|
||||||
|
<p>Original</p>
|
||||||
|
<img class='di ba b--black-20' style="width: initial;" src="{{ $i.RelPermalink }}" alt="{{ $alt }}">
|
||||||
|
<p>Processed</p>
|
||||||
|
<img class='di ba b--black-20' style="width: initial;" src="{{ $fi.RelPermalink }}" alt="{{ $alt }}">
|
||||||
|
{{- else -}}
|
||||||
|
<img class='di' style="width: initial;" src="{{ $fi.RelPermalink }}" alt="{{ $alt }}">
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "validate-arg-count" }}
|
||||||
|
{{- $msg := "When using the %q filter, the %q shortcode requires an args parameter with %d %s. See %s" }}
|
||||||
|
{{- if lt (len .args) .argsRequired }}
|
||||||
|
{{- $text := "values" }}
|
||||||
|
{{- if eq 1 .argsRequired }}
|
||||||
|
{{- $text = "value" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- errorf $msg .filter .name .argsRequired $text .position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "validate-arg-value" }}
|
||||||
|
{{- $msg := "The %q argument passed to the %q shortcode is invalid. Expected a value in the range [%v,%v], but received %v. See %s" }}
|
||||||
|
{{- if or (lt .argValue .min) (gt .argValue .max) }}
|
||||||
|
{{- errorf $msg .argName .name .min .max .argValue .position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "partials/inline/get-resource.html" }}
|
||||||
|
{{- $r := "" }}
|
||||||
|
{{- $u := urls.Parse .src }}
|
||||||
|
{{- $msg := "The %q shortcode was unable to resolve %s. See %s" }}
|
||||||
|
{{- if $u.IsAbs }}
|
||||||
|
{{- with resources.GetRemote $u.String }}
|
||||||
|
{{- with .Err }}
|
||||||
|
{{- errorf "%s" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- /* This is a remote resource. */}}
|
||||||
|
{{- $r = . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf $msg $.name $u.String $.position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with .page.Resources.Get (strings.TrimPrefix "./" $u.Path) }}
|
||||||
|
{{- /* This is a page resource. */}}
|
||||||
|
{{- $r = . }}
|
||||||
|
{{- else }}
|
||||||
|
{{- with resources.Get $u.Path }}
|
||||||
|
{{- /* This is a global resource. */}}
|
||||||
|
{{- $r = . }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf $msg $.name $u.Path $.position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- return $r}}
|
||||||
|
{{- end -}}
|
37
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/imgproc.html
generated
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{{- /*
|
||||||
|
Renders the given image using the given process specification.
|
||||||
|
|
||||||
|
@param {string} (positional parameter 0) The path to the image, relative to the current page. The image must be a page resource.
|
||||||
|
@param {string}} (positional parameter 1) The image processing specification.
|
||||||
|
|
||||||
|
@returns template.HTML
|
||||||
|
|
||||||
|
@example {{< imgproc "sunset.jpg" "resize 300x" />}}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- with $.Get 0 }}
|
||||||
|
{{- with $i := $.Page.Resources.Get . }}
|
||||||
|
{{- with $spec := $.Get 1 }}
|
||||||
|
{{- with $i.Process . }}
|
||||||
|
<figure style="padding: 0.25rem; margin: 2rem 0; background-color: #cccc">
|
||||||
|
<img style="max-width: 100%; width: auto; height: auto;" src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
|
||||||
|
<figcaption>
|
||||||
|
<small>
|
||||||
|
{{- with $.Inner }}
|
||||||
|
{{ . }}
|
||||||
|
{{- else }}
|
||||||
|
{{ $spec }}
|
||||||
|
{{- end }}
|
||||||
|
</small>
|
||||||
|
</figcaption>
|
||||||
|
</figure>
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a positional parameter (1) containing the image processing specification. See %s" $.Name $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a positional parameter (0) indicating the image path, relative to the current page. See %s" $.Name $.Position }}
|
||||||
|
{{- end }}
|
20
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/include.html
generated
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{{- /*
|
||||||
|
Renders the page using the RenderShortcode method on the Page object.
|
||||||
|
|
||||||
|
You must call this shortcode using the {{% %}} notation.
|
||||||
|
|
||||||
|
@param {string} (postional parameter 0) The path to the page, relative to the content directory.
|
||||||
|
@returns template.HTML
|
||||||
|
|
||||||
|
@example {{% include "functions/_common/glob-patterns" %}}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- with .Get 0 }}
|
||||||
|
{{- with site.GetPage . }}
|
||||||
|
{{- .RenderShortcodes }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a positional parameter indicating the path of the file to include. See %s" .Name .Position }}
|
||||||
|
{{- end }}
|
96
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/list-pages-in-section.html
generated
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
{{- /*
|
||||||
|
Renders a desciption list of the pages in the given section.
|
||||||
|
|
||||||
|
Render a subset of the pages in the section by specifying a predefined filter,
|
||||||
|
and whether to include those pages.
|
||||||
|
|
||||||
|
Filters are defined in the data directory, in the file named page_filters. Each
|
||||||
|
filter is an array of paths to a file, relative to the root of the content
|
||||||
|
directory. Hugo will throw an error if the specified filter does not exist, or
|
||||||
|
if any of the pages in the filter do not exist.
|
||||||
|
|
||||||
|
The definition term elements (dt) have an id attribute derived from the title
|
||||||
|
of the page. This is probably unique, because pages of the same title in the
|
||||||
|
same section is unlikely.
|
||||||
|
|
||||||
|
If you render a complete list on a page, then call the shortcode again to
|
||||||
|
render a subset, you will generate duplicate element ids. In this case, set
|
||||||
|
omitElementIDs to true for the subset.
|
||||||
|
|
||||||
|
@param {string} path The path to the section.
|
||||||
|
@param {string} [filter=""] The name of filter list.
|
||||||
|
@param {string} [filterType=""] The type of filter, either include or exclude.
|
||||||
|
@param {string} [omitElementIDs=false] Whether to omit dt element ids.
|
||||||
|
@param {string} [titlePrefix=""] The string to prepend to the link title.
|
||||||
|
|
||||||
|
@returns template.HTML
|
||||||
|
|
||||||
|
@example {{< list-pages-in-section path=/methods/resources >}}
|
||||||
|
@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude >}}
|
||||||
|
@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo >}}
|
||||||
|
@example {{< list-pages-in-section path=/functions/images filter=some_filter filterType=exclude titlePrefix=foo omitElementIDs=true >}}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- /* Initialize. */}}
|
||||||
|
{{- $filter := or "" (.Get "filter" | lower)}}
|
||||||
|
{{- $filterType := or (.Get "filterType") "none" | lower }}
|
||||||
|
{{- $filteredPages := slice }}
|
||||||
|
{{- $titlePrefix := or (.Get "titlePrefix") "" }}
|
||||||
|
{{- $omitElementIDs := false }}
|
||||||
|
|
||||||
|
{{- /* Get boolean parameters. */}}
|
||||||
|
{{- if in (slice "false" false 0) (.Get "omitElementIDs") }}
|
||||||
|
{{- $omitElementIDs = false }}
|
||||||
|
{{- else if in (slice "true" true 1) (.Get "omitElementIDs")}}
|
||||||
|
{{- $omitElementIDs = true }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Build slice of filtered pages. */}}
|
||||||
|
{{- with $filter }}
|
||||||
|
{{- with index site.Data.page_filters . }}
|
||||||
|
{{- range . }}
|
||||||
|
{{- with site.GetPage . }}
|
||||||
|
{{- $filteredPages = $filteredPages | append . }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find %q as specified in the page_filters data file. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find the %q filter in the page_filters data file. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- /* Render */}}
|
||||||
|
{{- with $sectionPath := .Get "path" }}
|
||||||
|
{{- with site.GetPage . }}
|
||||||
|
{{- with .RegularPages }}
|
||||||
|
<dl>
|
||||||
|
{{- range $page := .ByTitle }}
|
||||||
|
{{- if or
|
||||||
|
(and (eq $filterType "include") (in $filteredPages $page))
|
||||||
|
(and (eq $filterType "exclude") (not (in $filteredPages $page)))
|
||||||
|
(eq $filterType "none")
|
||||||
|
}}
|
||||||
|
{{- $linkTitle := .LinkTitle }}
|
||||||
|
{{- with $titlePrefix }}
|
||||||
|
{{- $linkTitle = printf "%s%s" . $linkTitle }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $idAttribute := "" }}
|
||||||
|
{{- if not $omitElementIDs }}
|
||||||
|
{{- $id := path.Join .File.Dir .File.ContentBaseName | replaceRE `[\|/]` ":" | lower }}
|
||||||
|
{{- $idAttribute = printf " id=%q" $id }}
|
||||||
|
{{- end }}
|
||||||
|
<dt {{- $idAttribute | safeHTMLAttr }}><a href="{{ $page.RelPermalink }}">{{ $linkTitle }}</a></dt>
|
||||||
|
<dd>{{- $page.Description | $page.RenderString }}</dd>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
</dl>
|
||||||
|
{{- else }}
|
||||||
|
{{- warnf "The %q shortcode found no pages in the %q section. See %s" $.Name $sectionPath $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find %q. See %s" $.Name $sectionPath $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a 'path' parameter indicating the path to the section. See %s" $.Name $.Position }}
|
||||||
|
{{- end }}
|
13
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html
generated
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{{ $version := .Get 0 }}
|
||||||
|
{{ if not $version }}
|
||||||
|
{{ errorf "Missing version in new-in shortcode " }}
|
||||||
|
{{ end }}
|
||||||
|
{{ $version = $version | strings.TrimPrefix "v" }}
|
||||||
|
<button
|
||||||
|
class="bg-white hover:bg-gray-100 text-gray-800 font-semibold py-2 mr2 px-4 border border-gray-400 rounded shadow">
|
||||||
|
<a
|
||||||
|
href="{{ printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }}"
|
||||||
|
target="_blank"
|
||||||
|
>New in v{{ $version }}</a
|
||||||
|
>
|
||||||
|
</button>
|
|
@ -1 +0,0 @@
|
||||||
<pre><code class="nohighlight">{{ .Inner }}</code></pre>
|
|
|
@ -1,9 +1,7 @@
|
||||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
{{ $_hugo_config := `{ "version": 1 }` }}
|
||||||
<aside class="admonition note">
|
|
||||||
<div class="note-icon">
|
<aside>
|
||||||
{{partial "svg/exclamation.svg" (dict "size" "20px" ) }}
|
<div class="admonition-content bl bw2 b--blue" >
|
||||||
</div>
|
{{ .Inner }}
|
||||||
<!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}note{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Note{{end}}</h2> -->
|
</div>
|
||||||
<!-- <h3>Note</h3> -->
|
|
||||||
<div class="admonition-content">{{- .Inner -}}</div>
|
|
||||||
</aside>
|
</aside>
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
{{$file := .Get "file"}}
|
|
||||||
{{$icon := index (split $file ".") 1 }}
|
|
||||||
<div class="code" id="{{$file | urlize}}">
|
|
||||||
<div class="filename" title="{{$file}}">{{$file}}</div>
|
|
||||||
<!-- <div class="code-icon">
|
|
||||||
<i class="icon-{{$icon}}"></i>
|
|
||||||
</div> -->
|
|
||||||
<div class="code-copy-content output-content">
|
|
||||||
{{- .Inner -}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
37
docs/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/quick-reference.html
generated
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{{/*
|
||||||
|
Renders the child sections of the given top-level section, listing each childs's immediate descendants.
|
||||||
|
|
||||||
|
@param {string} section The top-level section to render.
|
||||||
|
@returns template.HTML
|
||||||
|
|
||||||
|
@example {{% quick-reference section="functions" %}}
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{ $section := "" }}
|
||||||
|
{{ with .Get "section" }}
|
||||||
|
{{ $section = . }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "The %q shortcodes requires a 'section' parameter. See %s" .Name .Postion }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
{{/* Do not change the markdown indentation, and do not remove blank lines. */}}
|
||||||
|
{{ with site.GetPage $section }}
|
||||||
|
{{ range .Sections }}
|
||||||
|
|
||||||
|
## {{ .LinkTitle }}
|
||||||
|
{{ .RawContent }}
|
||||||
|
|
||||||
|
{{ range .Pages }}
|
||||||
|
{{ $aliases := "" }}
|
||||||
|
{{ if eq .Section "functions" }}
|
||||||
|
{{ $aliases = delimit .Params.action.aliases " or " }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
[{{ .LinkTitle }}]({{ .RelPermalink }}) {{ with $aliases }}({{ . }}){{ end }}
|
||||||
|
: {{ .Description }}
|
||||||
|
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{ else }}
|
||||||
|
{{ errorf "The %q shortcodes was unable to find the %q section. See %s" .Name $section .Postion }}
|
||||||
|
{{ end }}
|
|
@ -1,6 +1,29 @@
|
||||||
{{$file := .Get "file"}}
|
{{- $highlight := or (.Get "highlight") "" }}
|
||||||
{{- if eq (.Get "markdown") "true" -}}
|
|
||||||
{{- $file | readFile | markdownify -}}
|
{{- $markdown := false }}
|
||||||
{{- else -}}
|
{{- if in (slice "false" false 0) (.Get "markdown") }}
|
||||||
{{ $file | readFile | safeHTML }}
|
{{- $markdown = false }}
|
||||||
{{- end -}}
|
{{- else if in (slice "true" true 1) (.Get "markdown") }}
|
||||||
|
{{- $markdown = true }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- with .Get "file" }}
|
||||||
|
{{- if os.FileExists . }}
|
||||||
|
{{- with os.ReadFile . }}
|
||||||
|
{{- $content := trim . "\n\r" }}
|
||||||
|
{{- if $markdown }}
|
||||||
|
{{- $content | markdownify }}
|
||||||
|
{{- else if $highlight }}
|
||||||
|
{{- highlight $content $highlight }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $content | safeHTML }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to read %q. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode was unable to find %q. See %s" $.Name . $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- errorf "The %q shortcode requires a 'file' parameter. See %s" $.Name $.Position }}
|
||||||
|
{{- end }}
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
|
||||||
<aside class="admonition tip">
|
|
||||||
<div class="tip-icon">
|
|
||||||
{{partial "svg/exclamation.svg" .}}
|
|
||||||
</div>
|
|
||||||
<!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}tip{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Tip{{end}}</h2> -->
|
|
||||||
<!-- <h3>Tip</h3> -->
|
|
||||||
<div class="admonition-content">{{- .Inner -}}</div>
|
|
||||||
</aside>
|
|
|
@ -1,9 +0,0 @@
|
||||||
{{ $_hugo_config := `{ "version": 1 }` }}
|
|
||||||
<aside class="admonition warning">
|
|
||||||
<div class="admonition-icon">
|
|
||||||
{{partial "svg/exclamation.svg" .}}
|
|
||||||
</div>
|
|
||||||
<!-- <h2 id="{{if .Get 0}}{{.Get 0 | urlize}}{{else}}warning{{end}}">{{if .Get 0}}{{.Get 0 | markdownify}}{{else}}Warning{{end}}</h2> -->
|
|
||||||
<!-- <h3>Warning</h3> -->
|
|
||||||
<div class="admonition-content">{{- .Inner -}}</div>
|
|
||||||
</aside>
|
|
|
@ -1,11 +0,0 @@
|
||||||
<div class="video-wrapper" data-streaming="youtube" data-videoid="{{.Get "id"}}" >
|
|
||||||
<i class="icon-video-play-button shortcode"></i>
|
|
||||||
{{if (.Get "thumbnail")}}
|
|
||||||
<div style="background-image:url(/images/thumbnails/{{.Get "thumbnail"}})" alt="YouTube Thumbnail" class="video-thumbnail"></div>
|
|
||||||
{{else}}
|
|
||||||
<div style="background-image:url(//img.youtube.com/vi/{{.Get "id"}}/0.jpg)" alt="YouTube Thumbnail" class="video-thumbnail"></div>
|
|
||||||
{{end}}
|
|
||||||
</div>
|
|
||||||
{{ if (.Get "description") }}
|
|
||||||
<div class="video-description">{{ .Get "description" | markdownify }}</div>
|
|
||||||
{{ end }}
|
|
|
@ -1 +1 @@
|
||||||
# github.com/gohugoio/gohugoioTheme v0.0.0-20230927165800-342e2c850f18
|
# github.com/gohugoio/gohugoioTheme v0.0.0-20231111235806-77931ac4875e
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
---
|
---
|
||||||
title: {{ replace .File.ContentBaseName "-" " " | title }}
|
title: {{ replace .File.ContentBaseName "-" " " | title }}
|
||||||
description:
|
description:
|
||||||
categories: [functions]
|
categories: []
|
||||||
keywords: []
|
keywords: []
|
||||||
menu:
|
action:
|
||||||
docs:
|
|
||||||
parent: functions
|
|
||||||
function:
|
|
||||||
aliases: []
|
aliases: []
|
||||||
|
related: []
|
||||||
returnType:
|
returnType:
|
||||||
signatures: []
|
signatures: []
|
||||||
relatedFunctions: []
|
|
||||||
---
|
---
|
||||||
|
|
10
docs/archetypes/methods.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
---
|
||||||
|
title: {{ replace .File.ContentBaseName "-" " " | title }}
|
||||||
|
description:
|
||||||
|
categories: []
|
||||||
|
keywords: []
|
||||||
|
action:
|
||||||
|
related: []
|
||||||
|
returnType:
|
||||||
|
signatures: []
|
||||||
|
---
|
|
@ -3,6 +3,5 @@ Add some **general info** about {{ replace .Name "-" " " | title }} here.
|
||||||
|
|
||||||
The site is built by:
|
The site is built by:
|
||||||
|
|
||||||
* [Person 1](https://example.com)
|
* [Person 1](https://example.org)
|
||||||
* [Person 1](https://example.com)
|
* [Person 1](https://example.org)
|
||||||
|
|
||||||
|
|
BIN
docs/assets/images/examples/zion-national-park-grayscale.jpg
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
docs/assets/images/examples/zion-national-park.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
docs/assets/images/logos/logo-128x128.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
docs/assets/images/logos/logo-256x256.png
Normal file
After Width: | Height: | Size: 8.6 KiB |
BIN
docs/assets/images/logos/logo-512x512.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
docs/assets/images/logos/logo-64x64.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
docs/assets/images/logos/logo-96x96.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
|
@ -1,142 +1,152 @@
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "About Hugo"
|
identifier = 'about'
|
||||||
weight = 10
|
name = 'About Hugo'
|
||||||
identifier = "about"
|
pageRef = '/about/'
|
||||||
url = "/about/"
|
weight = 10
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Installation"
|
name = 'Installation'
|
||||||
weight = 20
|
weight = 20
|
||||||
identifier = "installation"
|
identifier = 'installation'
|
||||||
url = "/installation/"
|
pageRef = '/installation/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Getting started"
|
name = 'Getting started'
|
||||||
weight = 30
|
weight = 30
|
||||||
identifier = "getting-started"
|
identifier = 'getting-started'
|
||||||
url = "/getting-started/"
|
pageRef = '/getting-started/'
|
||||||
|
post = 'break'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Hugo Modules"
|
name = 'Content management'
|
||||||
weight = 40
|
weight = 40
|
||||||
identifier = "modules"
|
identifier = 'content-management'
|
||||||
post = "break"
|
post = 'expanded'
|
||||||
url = "/hugo-modules/"
|
pageRef = '/content-management/'
|
||||||
|
|
||||||
# Core menus
|
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Content management"
|
name = 'Templates'
|
||||||
weight = 50
|
weight = 50
|
||||||
identifier = "content-management"
|
identifier = 'templates'
|
||||||
post = "expanded"
|
pageRef = '/templates/'
|
||||||
url = "/content-management/"
|
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Templates"
|
name = 'Functions'
|
||||||
weight = 60
|
weight = 60
|
||||||
identifier = "templates"
|
identifier = 'functions'
|
||||||
url = "/templates/"
|
pageRef = '/functions/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Functions"
|
name = 'Methods'
|
||||||
weight = 70
|
weight = 70
|
||||||
identifier = "functions"
|
identifier = 'methods'
|
||||||
url = "/functions/"
|
pageRef = '/methods/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Variables"
|
name = 'Quick reference'
|
||||||
weight = 80
|
weight = 80
|
||||||
identifier = "variables"
|
identifier = 'quick-reference'
|
||||||
url = "/variables/"
|
pageRef = '/quick-reference/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Hugo Pipes"
|
name = 'Variables'
|
||||||
weight = 90
|
weight = 85
|
||||||
identifier = "hugo-pipes"
|
identifier = 'variables'
|
||||||
url = "/hugo-pipes/"
|
pageRef = '/variables/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "CLI"
|
name = 'Hugo Modules'
|
||||||
weight = 100
|
weight = 90
|
||||||
post = "break"
|
identifier = 'modules'
|
||||||
identifier = "commands"
|
pageRef = '/hugo-modules/'
|
||||||
url = "/commands/"
|
|
||||||
|
[[docs]]
|
||||||
|
name = 'Hugo Pipes'
|
||||||
|
weight = 100
|
||||||
|
identifier = 'hugo-pipes'
|
||||||
|
pageRef = '/hugo-pipes/'
|
||||||
|
|
||||||
|
[[docs]]
|
||||||
|
name = 'CLI'
|
||||||
|
weight = 110
|
||||||
|
post = 'break'
|
||||||
|
identifier = 'commands'
|
||||||
|
pageRef = '/commands/'
|
||||||
|
|
||||||
# Low level items
|
# Low level items
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Troubleshooting"
|
name = 'Troubleshooting'
|
||||||
weight = 110
|
weight = 120
|
||||||
identifier = "troubleshooting"
|
identifier = 'troubleshooting'
|
||||||
url = "/troubleshooting/"
|
pageRef = '/troubleshooting/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Developer tools"
|
name = 'Developer tools'
|
||||||
weight = 120
|
weight = 130
|
||||||
identifier = "developer-tools"
|
identifier = 'developer-tools'
|
||||||
url = "/tools/"
|
pageRef = '/tools/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Hosting and deployment"
|
name = 'Hosting and deployment'
|
||||||
weight = 130
|
weight = 140
|
||||||
identifier = "hosting-and-deployment"
|
identifier = 'hosting-and-deployment'
|
||||||
url = "/hosting-and-deployment/"
|
pageRef = '/hosting-and-deployment/'
|
||||||
|
|
||||||
[[docs]]
|
[[docs]]
|
||||||
name = "Contribute"
|
name = 'Contribute'
|
||||||
weight = 140
|
weight = 150
|
||||||
post = "break"
|
post = 'break'
|
||||||
identifier = "contribute"
|
identifier = 'contribute'
|
||||||
url = "/contribute/"
|
pageRef = '/contribute/'
|
||||||
|
|
||||||
######## QUICKLINKS
|
######## QUICKLINKS
|
||||||
|
|
||||||
[[quicklinks]]
|
[[quicklinks]]
|
||||||
name = "Fundamentals"
|
identifier = 'fundamentals'
|
||||||
weight = 1
|
name = 'Fundamentals'
|
||||||
identifier = "fundamentals"
|
pageRef = '/tags/fundamentals/'
|
||||||
url = "/tags/fundamentals/"
|
weight = 1
|
||||||
|
|
||||||
######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
|
######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "News"
|
name = 'News'
|
||||||
weight = 1
|
weight = 1
|
||||||
identifier = "news"
|
identifier = 'news'
|
||||||
url = "/news/"
|
pageRef = '/news/'
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "Docs"
|
name = 'Docs'
|
||||||
weight = 5
|
weight = 5
|
||||||
identifier = "docs"
|
identifier = 'docs'
|
||||||
url = "/documentation/"
|
url = '/documentation/'
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "Themes"
|
name = 'Themes'
|
||||||
weight = 10
|
weight = 10
|
||||||
identifier = "themes"
|
identifier = 'themes'
|
||||||
url = "https://themes.gohugo.io/"
|
url = 'https://themes.gohugo.io/'
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "Showcase"
|
name = 'Showcase'
|
||||||
weight = 20
|
weight = 20
|
||||||
identifier = "showcase"
|
identifier = 'showcase'
|
||||||
url = "/showcase/"
|
pageRef = '/showcase/'
|
||||||
|
|
||||||
# Anything with a weight > 100 gets an external icon
|
# Anything with a weight > 100 gets an external icon
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "Community"
|
name = 'Community'
|
||||||
weight = 150
|
weight = 150
|
||||||
icon = true
|
icon = true
|
||||||
identifier = "community"
|
identifier = 'community'
|
||||||
post = "external"
|
post = 'external'
|
||||||
url = "https://discourse.gohugo.io/"
|
url = 'https://discourse.gohugo.io/'
|
||||||
|
|
||||||
[[global]]
|
[[global]]
|
||||||
name = "GitHub"
|
name = 'GitHub'
|
||||||
weight = 200
|
weight = 200
|
||||||
identifier = "github"
|
identifier = 'github'
|
||||||
post = "external"
|
post = 'external'
|
||||||
url = "https://github.com/gohugoio/hugo"
|
url = 'https://github.com/gohugoio/hugo'
|
||||||
|
|
|
@ -22,3 +22,6 @@ flex_box_interior_classes = "flex-auto w-100 w-40-l mr3 mb3 bg-white ba b--moon-
|
||||||
|
|
||||||
[social]
|
[social]
|
||||||
twitter = "GoHugoIO"
|
twitter = "GoHugoIO"
|
||||||
|
|
||||||
|
[render_hooks.link]
|
||||||
|
errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
title: Benefits of static site generators
|
title: Benefits of static site generators
|
||||||
linkTitle: Static site generators
|
linkTitle: Static site generators
|
||||||
description: Improved performance, security and ease of use are just a few of the reasons static site generators are so appealing.
|
description: Improved performance, security and ease of use are just a few of the reasons static site generators are so appealing.
|
||||||
|
categories: [about]
|
||||||
keywords: [ssg,static,performance,security]
|
keywords: [ssg,static,performance,security]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
---
|
---
|
||||||
title: Hugo features
|
title: Hugo features
|
||||||
description: Hugo boasts blistering speed, robust content management, and a powerful templating language making it a great fit for all kinds of static websites.
|
description: Hugo boasts blistering speed, robust content management, and a powerful templating language making it a great fit for all kinds of static websites.
|
||||||
|
categories: [about]
|
||||||
|
keywords: []
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: about
|
parent: about
|
||||||
|
|
|
@ -2,15 +2,15 @@
|
||||||
title: Hugo and the General Data Protection Regulation
|
title: Hugo and the General Data Protection Regulation
|
||||||
linkTitle: Hugo and the GDPR
|
linkTitle: Hugo and the GDPR
|
||||||
description: About how to configure your Hugo site to meet the new regulations.
|
description: About how to configure your Hugo site to meet the new regulations.
|
||||||
layout: single
|
categories: [about]
|
||||||
keywords: ["GDPR", "Privacy", "Data Protection"]
|
keywords: ["GDPR", "Privacy", "Data Protection"]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: about
|
parent: about
|
||||||
weight: 60
|
weight: 60
|
||||||
weight: 60
|
weight: 60
|
||||||
aliases: [/privacy/,/gdpr/]
|
|
||||||
toc: true
|
toc: true
|
||||||
|
aliases: [/privacy/,/gdpr/]
|
||||||
---
|
---
|
||||||
|
|
||||||
General Data Protection Regulation ([GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)) is a regulation in EU law on data protection and privacy for all individuals within the European Union and the European Economic Area. It became enforceable on 25 May 2018.
|
General Data Protection Regulation ([GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)) is a regulation in EU law on data protection and privacy for all individuals within the European Union and the European Economic Area. It became enforceable on 25 May 2018.
|
||||||
|
@ -29,7 +29,7 @@ toc: true
|
||||||
|
|
||||||
Below are all privacy settings and their default value. These settings need to be put in your site configuration (e.g. `hugo.toml`).
|
Below are all privacy settings and their default value. These settings need to be put in your site configuration (e.g. `hugo.toml`).
|
||||||
|
|
||||||
{{< code-toggle file="hugo" >}}
|
{{< code-toggle file=hugo >}}
|
||||||
[privacy]
|
[privacy]
|
||||||
[privacy.disqus]
|
[privacy.disqus]
|
||||||
disable = false
|
disable = false
|
||||||
|
@ -58,7 +58,7 @@ privacyEnhanced = false
|
||||||
|
|
||||||
An example privacy configuration that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
|
An example privacy configuration that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
|
||||||
|
|
||||||
{{< code-toggle file="hugo" >}}
|
{{< code-toggle file=hugo >}}
|
||||||
[privacy]
|
[privacy]
|
||||||
[privacy.disqus]
|
[privacy.disqus]
|
||||||
disable = true
|
disable = true
|
||||||
|
@ -98,7 +98,7 @@ simple
|
||||||
|
|
||||||
**Note:** If you use the _simple mode_ for Instagram and a site styled with Bootstrap 4, you may want to disable the inline styles provided by Hugo:
|
**Note:** If you use the _simple mode_ for Instagram and a site styled with Bootstrap 4, you may want to disable the inline styles provided by Hugo:
|
||||||
|
|
||||||
{{< code-toggle file="hugo" >}}
|
{{< code-toggle file=hugo >}}
|
||||||
[services]
|
[services]
|
||||||
[services.instagram]
|
[services.instagram]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
|
@ -114,7 +114,7 @@ simple
|
||||||
|
|
||||||
**Note:** If you use the _simple mode_ for Twitter, you may want to disable the inline styles provided by Hugo:
|
**Note:** If you use the _simple mode_ for Twitter, you may want to disable the inline styles provided by Hugo:
|
||||||
|
|
||||||
{{< code-toggle file="hugo" >}}
|
{{< code-toggle file=hugo >}}
|
||||||
[services]
|
[services]
|
||||||
[services.twitter]
|
[services.twitter]
|
||||||
disableInlineCSS = true
|
disableInlineCSS = true
|
||||||
|
|
|
@ -1,160 +1,80 @@
|
||||||
---
|
---
|
||||||
title: License
|
title: License
|
||||||
description: Hugo v0.15 and later are released under the Apache 2.0 license.
|
description: Hugo is released under the Apache 2.0 license.
|
||||||
categories: ["about hugo"]
|
categories: [about]
|
||||||
keywords: ["License","apache"]
|
keywords: [license,apache]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: about
|
parent: about
|
||||||
weight: 70
|
weight: 70
|
||||||
weight: 70
|
weight: 70
|
||||||
aliases: [/meta/license]
|
|
||||||
toc: true
|
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% note %}}
|
## Apache License
|
||||||
Hugo v0.15 and later are released under the Apache 2.0 license.
|
|
||||||
Earlier versions of Hugo were released under the [Simple Public License](https://opensource.org/license/simpl-2-0-html/).
|
|
||||||
{{% /note %}}
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_ <br>
|
|
||||||
<https://www.apache.org/licenses/LICENSE-2.0>
|
|
||||||
|
|
||||||
*Terms and Conditions for use, reproduction, and distribution*
|
_Version 2.0, January 2004_
|
||||||
|
_<http://www.apache.org/licenses/>_
|
||||||
|
|
||||||
## 1. Definitions
|
### Terms and Conditions for use, reproduction, and distribution
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
#### 1. Definitions
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means **(i)** the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the outstanding shares, or **(iii)** beneficial ownership of such entity.
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
## 2. Grant of Copyright License
|
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
#### 2. Grant of Copyright License
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
## 3. Grant of Patent License
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
#### 3. Grant of Patent License
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
## 4. Redistribution
|
Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
#### 4. Redistribution
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of this License; and
|
||||||
changed the files; and
|
* **(b)** You must cause any modified files to carry prominent notices stating that You changed the files; and
|
||||||
* **\(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
|
||||||
|
|
||||||
## 5. Submission of Contributions
|
#### 5. Submission of Contributions
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
## 6. Trademarks
|
#### 6. Trademarks
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
## 7. Disclaimer of Warranty
|
#### 7. Disclaimer of Warranty
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
## 8. Limitation of Liability
|
#### 8. Limitation of Liability
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
|
||||||
|
|
||||||
## 9. Accepting Warranty or Additional Liability
|
#### 9. Accepting Warranty or Additional Liability
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
## APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets `[]` replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same “printed page” as the copyright notice for easier identification within third-party archives.
|
|
||||||
|
|
||||||
{{< code file="apache-notice.txt" >}}
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
https://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
{{< /code >}}
|
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
---
|
---
|
||||||
title: Hugo's security model
|
title: Hugo's security model
|
||||||
description: A summary of Hugo's security model.
|
description: A summary of Hugo's security model.
|
||||||
layout: single
|
categories: [about]
|
||||||
keywords: ["Security", "Privacy"]
|
keywords: [security,privacy]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: about
|
parent: about
|
||||||
weight: 50
|
weight: 50
|
||||||
weight: 50
|
weight: 50
|
||||||
aliases: [/security/]
|
|
||||||
toc: true
|
toc: true
|
||||||
|
aliases: [/security/]
|
||||||
---
|
---
|
||||||
|
|
||||||
## Runtime security
|
## Runtime security
|
||||||
|
@ -31,7 +31,7 @@ Hugo has a built-in security policy that restricts access to [os/exec](https://p
|
||||||
|
|
||||||
The default configuration is listed below. Any build using features not in the allow list of the security policy will fail with a detailed message about what needs to be done. Most of these settings are allow lists (string or slice, [Regular Expressions](https://pkg.go.dev/regexp) or `none` which matches nothing).
|
The default configuration is listed below. Any build using features not in the allow list of the security policy will fail with a detailed message about what needs to be done. Most of these settings are allow lists (string or slice, [Regular Expressions](https://pkg.go.dev/regexp) or `none` which matches nothing).
|
||||||
|
|
||||||
{{< code-toggle config="security" />}}
|
{{< code-toggle config=security />}}
|
||||||
|
|
||||||
Note that these and other configuration settings in Hugo can be overridden by the OS environment. If you want to block all remote HTTP fetching of data:
|
Note that these and other configuration settings in Hugo can be overridden by the OS environment. If you want to block all remote HTTP fetching of data:
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
---
|
---
|
||||||
title: What is Hugo
|
title: What is Hugo
|
||||||
description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
|
description: Hugo is a fast and modern static site generator written in Go, and designed to make website creation fun again.
|
||||||
layout: single
|
categories: [about]
|
||||||
|
keywords: []
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: about
|
parent: about
|
||||||
weight: 20
|
weight: 20
|
||||||
weight: 20
|
weight: 20
|
||||||
aliases: [/overview/introduction/,/about/why-i-built-hugo/]
|
|
||||||
toc: true
|
toc: true
|
||||||
|
aliases: [/overview/introduction/,/about/why-i-built-hugo/]
|
||||||
---
|
---
|
||||||
|
|
||||||
Hugo is a general-purpose website framework. Technically speaking, Hugo is a [static site generator]. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website's end users and an ideal writing experience for website authors.
|
Hugo is a general-purpose website framework. Technically speaking, Hugo is a [static site generator]. Unlike systems that dynamically build a page with each visitor request, Hugo builds pages when you create or update your content. Since websites are viewed far more often than they are edited, Hugo is designed to provide an optimal viewing experience for your website's end users and an ideal writing experience for website authors.
|
||||||
|
|
13
docs/content/en/content-management/_common/_index.md
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
cascade:
|
||||||
|
_build:
|
||||||
|
list: never
|
||||||
|
publishResources: false
|
||||||
|
render: never
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Files within this headless branch bundle are markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
|
||||||
|
|
||||||
|
Include the rendered content using the "include" shortcode.
|
||||||
|
-->
|
|
@ -1,3 +1,7 @@
|
||||||
|
---
|
||||||
|
# Do not remove front matter.
|
||||||
|
---
|
||||||
|
|
||||||
| Kind | Description | Example |
|
| Kind | Description | Example |
|
||||||
|----------------|--------------------------------------------------------------------|-------------------------------------------------------------------------------|
|
|----------------|--------------------------------------------------------------------|-------------------------------------------------------------------------------|
|
||||||
| `home` | The landing page for the home page | `/index.html` |
|
| `home` | The landing page for the home page | `/index.html` |
|
||||||
|
@ -5,3 +9,9 @@
|
||||||
| `section` | The landing page of a given section | `posts` section (`/posts/index.html`) |
|
| `section` | The landing page of a given section | `posts` section (`/posts/index.html`) |
|
||||||
| `taxonomy` | The landing page for a taxonomy | `tags` taxonomy (`/tags/index.html`) |
|
| `taxonomy` | The landing page for a taxonomy | `tags` taxonomy (`/tags/index.html`) |
|
||||||
| `term` | The landing page for one taxonomy's term | term `awesome` in `tags` taxonomy (`/tags/awesome/index.html`) |
|
| `term` | The landing page for one taxonomy's term | term `awesome` in `tags` taxonomy (`/tags/awesome/index.html`) |
|
||||||
|
|
||||||
|
Four other page kinds unrelated to content are `robotsTXT`, `RSS`, `sitemap`, and `404`. Although primarily for internal use, you can specify the name when disabling one or more page kinds on your site. For example:
|
||||||
|
|
||||||
|
{{< code-toggle file=hugo >}}
|
||||||
|
disableKinds = ['robotsTXT','404']
|
||||||
|
{{< /code-toggle >}}
|
|
@ -2,13 +2,13 @@
|
||||||
title: Content management
|
title: Content management
|
||||||
linkTitle: Overview
|
linkTitle: Overview
|
||||||
description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more.
|
description: Hugo makes managing large static sites easy with support for archetypes, content types, menus, cross references, summaries, and more.
|
||||||
|
categories: []
|
||||||
|
keywords: []
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
identifier: content-management-overview
|
identifier: content-management-overview
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 10
|
weight: 10
|
||||||
keywords: [source, organization]
|
|
||||||
categories: [content management]
|
|
||||||
weight: 10
|
weight: 10
|
||||||
aliases: [/content/,/content/organization]
|
aliases: [/content/,/content/organization]
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
---
|
---
|
||||||
title: Archetypes
|
title: Archetypes
|
||||||
description: An archetype is a template for new content.
|
description: An archetype is a template for new content.
|
||||||
keywords: [archetypes,generators,metadata,front matter]
|
|
||||||
categories: [content management]
|
categories: [content management]
|
||||||
|
keywords: [archetypes,generators,metadata,front matter]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 140
|
weight: 140
|
||||||
quicklinks:
|
quicklinks:
|
||||||
toc: true
|
|
||||||
weight: 140
|
weight: 140
|
||||||
|
toc: true
|
||||||
aliases: [/content/archetypes/]
|
aliases: [/content/archetypes/]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ A content file consists of [front matter] and markup. The markup is typically ma
|
||||||
|
|
||||||
The `hugo new content` command creates a new file in the `content` directory, using an archetype as a template. This is the default archetype:
|
The `hugo new content` command creates a new file in the `content` directory, using an archetype as a template. This is the default archetype:
|
||||||
|
|
||||||
{{< code-toggle file="archetypes/default.md" copy=false fm=true >}}
|
{{< code-toggle file=archetypes/default.md fm=true >}}
|
||||||
title = '{{ replace .File.ContentBaseName `-` ` ` | title }}'
|
title = '{{ replace .File.ContentBaseName `-` ` ` | title }}'
|
||||||
date = '{{ .Date }}'
|
date = '{{ .Date }}'
|
||||||
draft = true
|
draft = true
|
||||||
|
@ -27,13 +27,13 @@ draft = true
|
||||||
|
|
||||||
When you create new content, Hugo evaluates the [template actions] within the archetype. For example:
|
When you create new content, Hugo evaluates the [template actions] within the archetype. For example:
|
||||||
|
|
||||||
```text
|
```sh
|
||||||
hugo new content posts/my-first-post.md
|
hugo new content posts/my-first-post.md
|
||||||
```
|
```
|
||||||
|
|
||||||
With the default archetype shown above, Hugo creates this content file:
|
With the default archetype shown above, Hugo creates this content file:
|
||||||
|
|
||||||
{{< code-toggle file="content/posts/my-first-post.md" copy=false fm=true >}}
|
{{< code-toggle file=content/posts/my-first-post.md fm=true >}}
|
||||||
title = 'My First Post'
|
title = 'My First Post'
|
||||||
date = '2023-08-24T11:49:46-07:00'
|
date = '2023-08-24T11:49:46-07:00'
|
||||||
draft = true
|
draft = true
|
||||||
|
@ -53,7 +53,7 @@ Hugo looks for archetypes in the `archetypes` directory in the root of your proj
|
||||||
|
|
||||||
For example, with this command:
|
For example, with this command:
|
||||||
|
|
||||||
```text
|
```sh
|
||||||
hugo new content posts/my-first-post.md
|
hugo new content posts/my-first-post.md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ Archetypes receive the following objects and values in [context]:
|
||||||
- `.Date`
|
- `.Date`
|
||||||
- `.Type`
|
- `.Type`
|
||||||
- `.Site` (see [details](/variables/site/))
|
- `.Site` (see [details](/variables/site/))
|
||||||
- `.File` (see [details](/variables/files/))
|
- `.File` (see [details](/variables/file/))
|
||||||
|
|
||||||
As shown above, the default archetype passes `.File.ContentBaseName` as the argument to the `replace` function when populating the title in front matter.
|
As shown above, the default archetype passes `.File.ContentBaseName` as the argument to the `replace` function when populating the title in front matter.
|
||||||
|
|
||||||
|
@ -85,8 +85,7 @@ Although typically used as a front matter template, you can also use an archetyp
|
||||||
|
|
||||||
For example, in a documentation site you might have a section (content type) for functions. Every page within this section should follow the same format: a brief description, the function signature, examples, and notes. We can pre-populate the page to remind content authors of the standard format.
|
For example, in a documentation site you might have a section (content type) for functions. Every page within this section should follow the same format: a brief description, the function signature, examples, and notes. We can pre-populate the page to remind content authors of the standard format.
|
||||||
|
|
||||||
|
{{< code file=archetypes/functions.md >}}
|
||||||
{{< code file="archetypes/functions.md" copy=false >}}
|
|
||||||
---
|
---
|
||||||
date: '{{ .Date }}'
|
date: '{{ .Date }}'
|
||||||
draft: true
|
draft: true
|
||||||
|
@ -125,17 +124,17 @@ Create an archetype for galleries:
|
||||||
```text
|
```text
|
||||||
archetypes/
|
archetypes/
|
||||||
├── galleries/
|
├── galleries/
|
||||||
│ ├── images/
|
│ ├── images/
|
||||||
│ │ └── .gitkeep
|
│ │ └── .gitkeep
|
||||||
│ └── index.md <-- same format as default.md
|
│ └── index.md <-- same format as default.md
|
||||||
└── default.md
|
└── default.md
|
||||||
```
|
```
|
||||||
|
|
||||||
Subdirectories within an archetype must contain at least one file. Without a file, Hugo will not create the subdirectory when you create new content. The name and size of the file are irrelevant. The example above includes a `.gitkeep` file, an empty file commonly used to preserve otherwise empty directories in a Git repository.
|
Subdirectories within an archetype must contain at least one file. Without a file, Hugo will not create the subdirectory when you create new content. The name and size of the file are irrelevant. The example above includes a `.gitkeep` file, an empty file commonly used to preserve otherwise empty directories in a Git repository.
|
||||||
|
|
||||||
|
|
||||||
To create a new gallery:
|
To create a new gallery:
|
||||||
```text
|
|
||||||
|
```sh
|
||||||
hugo new galleries/bryce-canyon
|
hugo new galleries/bryce-canyon
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -166,13 +165,13 @@ archetypes/
|
||||||
|
|
||||||
To create an article using the articles archetype:
|
To create an article using the articles archetype:
|
||||||
|
|
||||||
```text
|
```sh
|
||||||
hugo new content articles/something.md
|
hugo new content articles/something.md
|
||||||
```
|
```
|
||||||
|
|
||||||
To create an article using the tutorials archetype:
|
To create an article using the tutorials archetype:
|
||||||
|
|
||||||
```text
|
```sh
|
||||||
hugo new content --kind tutorials articles/something.md
|
hugo new content --kind tutorials articles/something.md
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -1,102 +1,321 @@
|
||||||
---
|
---
|
||||||
title: Build options
|
title: Build options
|
||||||
description: Build options help define how Hugo must treat a given page when building the site.
|
description: Build options help define how Hugo must treat a given page when building the site.
|
||||||
|
categories: [content management,fundamentals]
|
||||||
keywords: [build,content,front matter, page resources]
|
keywords: [build,content,front matter, page resources]
|
||||||
categories: [fundamentals,content management]
|
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 70
|
weight: 70
|
||||||
toc: true
|
|
||||||
weight: 70
|
weight: 70
|
||||||
|
toc: true
|
||||||
aliases: [/content/build-options/]
|
aliases: [/content/build-options/]
|
||||||
---
|
---
|
||||||
|
|
||||||
They are stored in a reserved front matter object named `_build` with the following defaults:
|
Build options are stored in a reserved front matter object named `_build` with these defaults:
|
||||||
|
|
||||||
{{< code-toggle >}}
|
{{< code-toggle file=content/example/index.md fm=true >}}
|
||||||
_build:
|
[_build]
|
||||||
render: always
|
list = 'always'
|
||||||
list: always
|
publishResources = true
|
||||||
publishResources: true
|
render = 'always'
|
||||||
{{< /code-toggle >}}
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
#### render
|
|
||||||
|
|
||||||
If `always`, the page will be treated as a published page, holding its dedicated output files (`index.html`, etc...) and permalink.
|
list
|
||||||
|
: When to include the page within page collections. Specify one of:
|
||||||
|
|
||||||
Valid values are:
|
- `always`
|
||||||
|
: Include the page in _all_ page collections. For example, `site.RegularPages`, `.Pages`, etc. This is the default value.
|
||||||
|
|
||||||
- `never`
|
|
||||||
: The page will not be included in any page collection.
|
|
||||||
- `always (default)`
|
|
||||||
: The page will be rendered to disk and get a `RelPermalink` etc.
|
|
||||||
- `link`
|
|
||||||
: The page will be not be rendered to disk, but will get a `RelPermalink`.
|
|
||||||
|
|
||||||
#### list
|
|
||||||
|
|
||||||
Valid values are:
|
|
||||||
|
|
||||||
- `never`
|
|
||||||
: The page will not be included in any page collection.
|
|
||||||
- `always (default)`
|
|
||||||
: The page will be included in all page collections, e.g. `site.RegularPages`, `.Pages`.
|
|
||||||
- `local`
|
- `local`
|
||||||
: The page will be included in any _local_ page collection, e.g. `.RegularPages`, `.Pages`. One use case for this would be to create fully navigable, but headless content sections.
|
: Include the page in _local_ page collections. For example, `.RegularPages`, `.Pages`, etc. Use this option to create fully navigable but headless content sections.
|
||||||
|
|
||||||
#### publishResources
|
- `never`
|
||||||
|
: Do not include the page in _any_ page collection.
|
||||||
|
|
||||||
If set to `true` (default) the [Bundle's Resources](/content-management/page-bundles) will be published.
|
publishResources
|
||||||
Setting this to `false` will still publish Resources on demand (when a resource's `.Permalink` or `.RelPermalink` is invoked from the templates) but will skip the others.
|
: Applicable to [page bundles], determines whether to publish the associated [page resources]. Specify one of:
|
||||||
|
|
||||||
|
- `true`
|
||||||
|
: Always publish resources. This is the default value.
|
||||||
|
|
||||||
|
- `false`
|
||||||
|
: Only publish a resource when invoking its [`Permalink`], [`RelPermalink`], or [`Publish`] method within a template.
|
||||||
|
|
||||||
|
render
|
||||||
|
: When to render the page. Specify one of:
|
||||||
|
|
||||||
|
- `always`
|
||||||
|
: Always render the page to disk. This is the default value.
|
||||||
|
|
||||||
|
- `link`
|
||||||
|
: Do not render the page to disk, but include it in all page collections.
|
||||||
|
|
||||||
|
- `never`
|
||||||
|
: Never render the page to disk, and exclude it from all page collections.
|
||||||
|
|
||||||
|
[page bundles]: content-management/page-bundles
|
||||||
|
[page resources]: /content-management/page-resources
|
||||||
|
[`Permalink`]: /methods/resource/permalink
|
||||||
|
[`RelPermalink`]: /methods/resource/relpermalink
|
||||||
|
[`Publish`]: /methods/resource/publish
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
Any page, regardless of their build options, will always be available using the [`.GetPage`](/functions/getpage) methods.
|
Any page, regardless of its build options, will always be available by using the [`.Page.GetPage`] or [`.Site.GetPage`] method.
|
||||||
|
|
||||||
|
[`.Page.GetPage`]: /methods/page/getpage
|
||||||
|
[`.Site.GetPage`]: /methods/site/getpage
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
### Illustrative use cases
|
## Example -- headless page
|
||||||
|
|
||||||
#### Not publishing a page
|
Create a unpublished page whose content and resources can be included in other pages.
|
||||||
|
|
||||||
Project needs a "Who We Are" content file for front matter and body to be used by the homepage but nowhere else.
|
```text
|
||||||
|
content/
|
||||||
|
├── headless/
|
||||||
|
│ ├── a.jpg
|
||||||
|
│ ├── b.jpg
|
||||||
|
│ └── index.md <-- leaf bundle
|
||||||
|
└── _index.md <-- home page
|
||||||
|
```
|
||||||
|
|
||||||
{{< code-toggle file="content/who-we-are.md" fm=true copy=false >}}
|
Set the build options in front matter:
|
||||||
title: Who we are
|
|
||||||
_build:
|
{{< code-toggle file=content/headless/index.md fm=true >}}
|
||||||
list: false
|
title = 'Headless page'
|
||||||
render: false
|
[_build]
|
||||||
|
list = 'never'
|
||||||
|
publishResources = false
|
||||||
|
render = 'never'
|
||||||
{{< /code-toggle >}}
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
{{< code file="layouts/index.html" copy=false >}}
|
To include the content and images on the home page:
|
||||||
<section id="who-we-are">
|
|
||||||
{{ with site.GetPage "who-we-are" }}
|
{{< code file=layouts/_default/home.html >}}
|
||||||
|
{{ with .Site.GetPage "/headless" }}
|
||||||
|
{{ .Content }}
|
||||||
|
{{ range .Resources.ByType "image" }}
|
||||||
|
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
|
{{< /code >}}
|
||||||
|
|
||||||
|
The published site will have this structure:
|
||||||
|
|
||||||
|
```text
|
||||||
|
public/
|
||||||
|
├── headless/
|
||||||
|
│ ├── a.jpg
|
||||||
|
│ └── b.jpg
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
In the example above, note that:
|
||||||
|
|
||||||
|
1. Hugo did not publish an HTML file for the page.
|
||||||
|
2. Despite setting `publishResources` to `false` in front matter, Hugo published the [page resources] because we invoked the [`RelPermalink`] method on each resource. This is the expected behavior.
|
||||||
|
|
||||||
|
## Example -- headless section
|
||||||
|
|
||||||
|
Create a unpublished section whose content and resources can be included in other pages.
|
||||||
|
|
||||||
|
[branch bundle]: /content-management/page-bundles
|
||||||
|
|
||||||
|
```text
|
||||||
|
content/
|
||||||
|
├── headless/
|
||||||
|
│ ├── note-1/
|
||||||
|
│ │ ├── a.jpg
|
||||||
|
│ │ ├── b.jpg
|
||||||
|
│ │ └── index.md <-- leaf bundle
|
||||||
|
│ ├── note-2/
|
||||||
|
│ │ ├── c.jpg
|
||||||
|
│ │ ├── d.jpg
|
||||||
|
│ │ └── index.md <-- leaf bundle
|
||||||
|
│ └── _index.md <-- branch bundle
|
||||||
|
└── _index.md <-- home page
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages.
|
||||||
|
|
||||||
|
{{< code-toggle file=content/headless/_index.md fm=true >}}
|
||||||
|
title = 'Headless section'
|
||||||
|
[[cascade]]
|
||||||
|
[cascade._build]
|
||||||
|
list = 'local'
|
||||||
|
publishResources = false
|
||||||
|
render = 'never'
|
||||||
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
|
In the front matter above, note that we have set `list` to `local` to include the descendant pages in local page collections.
|
||||||
|
|
||||||
|
To include the content and images on the home page:
|
||||||
|
|
||||||
|
{{< code file=layouts/_default/home.html >}}
|
||||||
|
{{ with .Site.GetPage "/headless" }}
|
||||||
|
{{ range .Pages }}
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
|
{{ range .Resources.ByType "image" }}
|
||||||
|
<img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
|
||||||
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</section>
|
{{ end }}
|
||||||
{{< /code >}}
|
{{< /code >}}
|
||||||
|
|
||||||
#### Listing pages without publishing them
|
The published site will have this structure:
|
||||||
|
|
||||||
Website needs to showcase a few of the hundred "testimonials" available as content files without publishing any of them.
|
```text
|
||||||
|
public/
|
||||||
|
├── headless/
|
||||||
|
│ ├── note-1/
|
||||||
|
│ │ ├── a.jpg
|
||||||
|
│ │ └── b.jpg
|
||||||
|
│ └── note-2/
|
||||||
|
│ ├── c.jpg
|
||||||
|
│ └── d.jpg
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
||||||
To avoid setting the build options on every testimonials, one can use [`cascade`](/content-management/front-matter#front-matter-cascade) on the testimonial section's content file.
|
In the example above, note that:
|
||||||
|
|
||||||
{{< code-toggle >}}
|
1. Hugo did not publish an HTML file for the page.
|
||||||
title: Testimonials
|
2. Despite setting `publishResources` to `false` in front matter, Hugo correctly published the [page resources] because we invoked the [`RelPermalink`] method on each resource. This is the expected behavior.
|
||||||
_build:
|
|
||||||
render: true
|
## Example -- list without publishing
|
||||||
cascade:
|
|
||||||
_build:
|
Publish a section page without publishing the descendant pages. For example, to create a glossary:
|
||||||
render: false
|
|
||||||
list: true # default
|
```text
|
||||||
|
content/
|
||||||
|
├── glossary/
|
||||||
|
│ ├── _index.md
|
||||||
|
│ ├── bar.md
|
||||||
|
│ ├── baz.md
|
||||||
|
│ └── foo.md
|
||||||
|
└── _index.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages.
|
||||||
|
|
||||||
|
{{< code-toggle file=content/glossary/_index.md fm=true >}}
|
||||||
|
title = 'Glossary'
|
||||||
|
[_build]
|
||||||
|
render = 'always'
|
||||||
|
[[cascade]]
|
||||||
|
[cascade._build]
|
||||||
|
list = 'local'
|
||||||
|
publishResources = false
|
||||||
|
render = 'never'
|
||||||
{{< /code-toggle >}}
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
{{< code file="layouts/_defaults/testimonials.html" copy=false >}}
|
To render the glossary:
|
||||||
<section id="testimonials">
|
|
||||||
{{ range first 5 .Pages }}
|
{{< code file=layouts/glossary/list.html >}}
|
||||||
<blockquote cite="{{ .Params.cite }}">
|
<dl>
|
||||||
{{ .Content }}
|
{{ range .Pages }}
|
||||||
</blockquote>
|
<dt>{{ .Title }}</dt>
|
||||||
|
<dd>{{ .Content }}</dd>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</section>
|
</dl>
|
||||||
{{< /code >}}
|
{{< /code >}}
|
||||||
|
|
||||||
|
The published site will have this structure:
|
||||||
|
|
||||||
|
```text
|
||||||
|
public/
|
||||||
|
├── glossary/
|
||||||
|
│ └── index.html
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example -- publish without listing
|
||||||
|
|
||||||
|
Publish a section's descendant pages without publishing the section page itself.
|
||||||
|
|
||||||
|
```text
|
||||||
|
content/
|
||||||
|
├── books/
|
||||||
|
│ ├── _index.md
|
||||||
|
│ ├── book-1.md
|
||||||
|
│ └── book-2.md
|
||||||
|
└── _index.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the build options in front matter:
|
||||||
|
|
||||||
|
{{< code-toggle file=content/books/_index.md >}}
|
||||||
|
title = 'Books'
|
||||||
|
[_build]
|
||||||
|
render = 'never'
|
||||||
|
list = 'never'
|
||||||
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
|
The published site will have this structure:
|
||||||
|
|
||||||
|
```html
|
||||||
|
public/
|
||||||
|
├── books/
|
||||||
|
│ ├── book-1/
|
||||||
|
│ │ └── index.html
|
||||||
|
│ └── book-2/
|
||||||
|
│ └── index.html
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example -- conditionally hide section
|
||||||
|
|
||||||
|
Consider this example. A documentation site has a team of contributors with access to 20 custom shortcodes. Each shortcode takes several arguments, and requires documentation for the contributors to reference when using them.
|
||||||
|
|
||||||
|
Instead of external documentation for the shortcodes, include an "internal" section that is hidden when building the production site.
|
||||||
|
|
||||||
|
```text
|
||||||
|
content/
|
||||||
|
├── internal/
|
||||||
|
│ ├── shortcodes/
|
||||||
|
│ │ ├── _index.md
|
||||||
|
│ │ ├── shortcode-1.md
|
||||||
|
│ │ └── shortcode-2.md
|
||||||
|
│ └── _index.md
|
||||||
|
├── reference/
|
||||||
|
│ ├── _index.md
|
||||||
|
│ ├── reference-1.md
|
||||||
|
│ └── reference-2.md
|
||||||
|
├── tutorials/
|
||||||
|
│ ├── _index.md
|
||||||
|
│ ├── tutorial-1.md
|
||||||
|
│ └── tutorial-2.md
|
||||||
|
└── _index.md
|
||||||
|
```
|
||||||
|
|
||||||
|
Set the build options in front matter, using the `cascade` keyword to "cascade" the values down to descendant pages, and use the `target` keyword to target the production environment.
|
||||||
|
|
||||||
|
{{< code-toggle file=content/internal/_index.md >}}
|
||||||
|
title = 'Internal'
|
||||||
|
[[cascade]]
|
||||||
|
[cascade._build]
|
||||||
|
render = 'never'
|
||||||
|
list = 'never'
|
||||||
|
[cascade._target]
|
||||||
|
environment = 'production'
|
||||||
|
{{< /code-toggle >}}
|
||||||
|
|
||||||
|
The production site will have this structure:
|
||||||
|
|
||||||
|
```html
|
||||||
|
public/
|
||||||
|
├── reference/
|
||||||
|
│ ├── reference-1/
|
||||||
|
│ │ └── index.html
|
||||||
|
│ ├── reference-2/
|
||||||
|
│ │ └── index.html
|
||||||
|
│ └── index.html
|
||||||
|
├── tutorials/
|
||||||
|
│ ├── tutorial-1/
|
||||||
|
│ │ └── index.html
|
||||||
|
│ ├── tutorial-2/
|
||||||
|
│ │ └── index.html
|
||||||
|
│ └── index.html
|
||||||
|
└── index.html
|
||||||
|
```
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
---
|
---
|
||||||
title: Comments
|
title: 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.
|
description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
|
||||||
|
categories: [content management]
|
||||||
keywords: [sections,content,organization]
|
keywords: [sections,content,organization]
|
||||||
categories: [project organization]
|
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 220
|
weight: 220
|
||||||
toc: true
|
|
||||||
weight: 220
|
weight: 220
|
||||||
|
toc: true
|
||||||
aliases: [/extras/comments/]
|
aliases: [/extras/comments/]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
title: Links and cross references
|
title: Links and cross references
|
||||||
description: Shortcodes for creating links to documents.
|
description: Shortcodes for creating links to documents.
|
||||||
categories: [content management]
|
categories: [content management]
|
||||||
keywords: ["cross references","references", "anchors", "urls"]
|
keywords: [cross references,references,anchors,urls]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 170
|
weight: 170
|
||||||
toc: true
|
|
||||||
weight: 170
|
weight: 170
|
||||||
|
toc: true
|
||||||
aliases: [/extras/crossreferences/]
|
aliases: [/extras/crossreferences/]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -35,7 +35,6 @@ The `ref` and `relref` shortcodes require a single parameter: the path to a cont
|
||||||
|
|
||||||
The pages can be referenced as follows:
|
The pages can be referenced as follows:
|
||||||
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
{{</* ref "document2" */>}} // <- From pages/document1.md, relative path
|
{{</* ref "document2" */>}} // <- From pages/document1.md, relative path
|
||||||
{{</* ref "document2#anchor" */>}}
|
{{</* ref "document2#anchor" */>}}
|
||||||
|
@ -138,7 +137,7 @@ produces this HTML:
|
||||||
|
|
||||||
## Ref and RelRef Configuration
|
## Ref and RelRef Configuration
|
||||||
|
|
||||||
The behavior can, since Hugo 0.45, be configured in `hugo.toml`:
|
The behavior can be configured in `hugo.toml`:
|
||||||
|
|
||||||
refLinksErrorLevel ("ERROR")
|
refLinksErrorLevel ("ERROR")
|
||||||
: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
|
: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
|
||||||
|
@ -146,7 +145,6 @@ refLinksErrorLevel ("ERROR")
|
||||||
refLinksNotFoundURL
|
refLinksNotFoundURL
|
||||||
: URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
|
: URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
|
||||||
|
|
||||||
|
|
||||||
[lists]: /templates/lists/
|
[lists]: /templates/lists/
|
||||||
[output formats]: /templates/output-formats/
|
[output formats]: /templates/output-formats/
|
||||||
[shortcode]: /content-management/shortcodes/
|
[shortcode]: /content-management/shortcodes/
|
||||||
|
|
|
@ -7,12 +7,12 @@ menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 50
|
weight: 50
|
||||||
toc: true
|
|
||||||
weight: 50
|
weight: 50
|
||||||
|
toc: true
|
||||||
---
|
---
|
||||||
{{< new-in "0.93.0" >}}
|
{{< new-in 0.93.0 >}}
|
||||||
|
|
||||||
## GoAT diagrams (Ascii)
|
## GoAT diagrams (ASCII)
|
||||||
|
|
||||||
Hugo supports [GoAT](https://github.com/bep/goat) natively. This means that this code block:
|
Hugo supports [GoAT](https://github.com/bep/goat) natively. This means that this code block:
|
||||||
|
|
||||||
|
@ -165,7 +165,6 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
|
||||||
└─Fedora
|
└─Fedora
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Sequence diagram
|
### Sequence diagram
|
||||||
|
|
||||||
<https://arthursonzogni.com/Diagon/#Sequence>
|
<https://arthursonzogni.com/Diagon/#Sequence>
|
||||||
|
@ -186,7 +185,6 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Flowchart
|
### Flowchart
|
||||||
|
|
||||||
<https://arthursonzogni.com/Diagon/#Flowchart>
|
<https://arthursonzogni.com/Diagon/#Flowchart>
|
||||||
|
@ -232,7 +230,6 @@ Created from <https://arthursonzogni.com/Diagon/#Tree>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Table
|
### Table
|
||||||
|
|
||||||
<https://arthursonzogni.com/Diagon/#Table>
|
<https://arthursonzogni.com/Diagon/#Table>
|
||||||
|
|
|
@ -7,8 +7,8 @@ menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 40
|
weight: 40
|
||||||
toc: true
|
|
||||||
weight: 40
|
weight: 40
|
||||||
|
toc: true
|
||||||
aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/]
|
aliases: [/content/markdown-extras/,/content/supported-formats/,/doc/supported-formats/]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -24,12 +24,12 @@ The current list of content formats in Hugo:
|
||||||
|
|
||||||
| Name | Markup identifiers | Comment |
|
| Name | Markup identifiers | Comment |
|
||||||
| ------------- | ------------- |-------------|
|
| ------------- | ------------- |-------------|
|
||||||
| Goldmark | md, markdown, goldmark |Note that you can set the default handler of `md` and `markdown` to something else, see [Configure Markup](/getting-started/configuration-markup/).|
|
| Goldmark | `markdown`, `goldmark` |Note that you can set the default handler of `md` and `markdown` to something else, see [Configure Markup](/getting-started/configuration-markup/).|
|
||||||
|Emacs Org-Mode|org|See [go-org](https://github.com/niklasfasching/go-org).|
|
|Emacs Org-Mode|`org`|See [go-org](https://github.com/niklasfasching/go-org).|
|
||||||
|AsciiDoc|asciidocext, adoc, ad|Needs [Asciidoctor][ascii] installed.|
|
|AsciiDoc|`asciidocext`, `adoc`, `ad`|Needs [Asciidoctor][ascii] installed.|
|
||||||
|RST|rst|Needs [RST](https://docutils.sourceforge.io/rst.html) installed.|
|
|RST|`rst`|Needs [RST](https://docutils.sourceforge.io/rst.html) installed.|
|
||||||
|Pandoc|pandoc, pdc|Needs [Pandoc](https://www.pandoc.org/) installed.|
|
|Pandoc|`pandoc`, `pdc`|Needs [Pandoc](https://www.pandoc.org/) installed.|
|
||||||
|HTML|html, htm|To be treated as a content file, with layout, shortcodes etc., it must have front matter. If not, it will be copied as-is.|
|
|HTML|`html`, `htm`|To be treated as a content file, with layout, shortcodes etc., it must have front matter. If not, it will be copied as-is.|
|
||||||
|
|
||||||
The `markup identifier` is fetched from either the `markup` variable in front matter or from the file extension. For markup-related configuration, see [Configure Markup](/getting-started/configuration-markup/).
|
The `markup identifier` is fetched from either the `markup` variable in front matter or from the file extension. For markup-related configuration, see [Configure Markup](/getting-started/configuration-markup/).
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ optional extensions like `asciidoctor-diagram` or `asciidoctor-html5s` are insta
|
||||||
External `asciidoctor` command requires Hugo rendering to _disk_ to a specific destination directory. It is required to run Hugo with the command option `--destination`.
|
External `asciidoctor` command requires Hugo rendering to _disk_ to a specific destination directory. It is required to run Hugo with the command option `--destination`.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
Some Asciidoctor parameters can be customized in Hugo. See [details].
|
Some Asciidoctor parameters can be customized in Hugo. See [details].
|
||||||
|
|
||||||
[details]: /getting-started/configuration-markup/#asciidoc
|
[details]: /getting-started/configuration-markup/#asciidoc
|
||||||
|
|
||||||
|
@ -75,7 +75,6 @@ Markdown syntax is simple enough to learn in a single sitting. The following are
|
||||||
[ascii]: https://asciidoctor.org/
|
[ascii]: https://asciidoctor.org/
|
||||||
[config]: /getting-started/configuration/
|
[config]: /getting-started/configuration/
|
||||||
[developer tools]: /tools/
|
[developer tools]: /tools/
|
||||||
[emojis]: https://www.webpagefx.com/tools/emoji-cheat-sheet/
|
|
||||||
[fireball]: https://daringfireball.net/projects/markdown/
|
[fireball]: https://daringfireball.net/projects/markdown/
|
||||||
[gfmtasks]: https://guides.github.com/features/mastering-markdown/#syntax
|
[gfmtasks]: https://guides.github.com/features/mastering-markdown/#syntax
|
||||||
[helperssource]: https://github.com/gohugoio/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65
|
[helperssource]: https://github.com/gohugoio/hugo/blob/77c60a3440806067109347d04eb5368b65ea0fe8/helpers/general.go#L65
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
title: Front matter
|
title: Front matter
|
||||||
description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
|
description: Hugo allows you to add front matter in yaml, toml, or json to your content files.
|
||||||
categories: [content management]
|
categories: [content management]
|
||||||
keywords: ["front matter", "yaml", "toml", "json", "metadata", "archetypes"]
|
keywords: [front matter,yaml,toml,json,metadata,archetypes]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
weight: 60
|
weight: 60
|
||||||
toc: true
|
|
||||||
weight: 60
|
weight: 60
|
||||||
|
toc: true
|
||||||
aliases: [/content/front-matter/]
|
aliases: [/content/front-matter/]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ lastmod
|
||||||
: The datetime at which the content was last modified.
|
: The datetime at which the content was last modified.
|
||||||
|
|
||||||
linkTitle
|
linkTitle
|
||||||
: Used for creating links to content; if set, Hugo defaults to using the `linkTitle` before the `title`. Hugo can also [order lists of content by `linkTitle`][bylinktitle].
|
: Used for creating links to content; if set, Hugo defaults to using the `linkTitle` before the `title`.
|
||||||
|
|
||||||
markup
|
markup
|
||||||
: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
|
: **experimental**; specify `"rst"` for reStructuredText (requires`rst2html`) or `"md"` (default) for Markdown.
|
||||||
|
@ -131,7 +131,7 @@ videos
|
||||||
weight
|
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.
|
: 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.
|
||||||
|
|
||||||
\<taxonomies\>
|
taxonomies
|
||||||
: Field name of the *plural* form of the index. See `tags` and `categories` in the above front matter examples. *Note that the plural form of user-defined taxonomies cannot be the same as any of the predefined front matter variables.*
|
: 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 %}}
|
{{% note %}}
|
||||||
|
@ -144,7 +144,7 @@ You can add fields to your front matter arbitrarily to meet your needs. These us
|
||||||
|
|
||||||
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.
|
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 >}}
|
{{< code-toggle >}}
|
||||||
include_toc: true
|
include_toc: true
|
||||||
show_comments: false
|
show_comments: false
|
||||||
{{</ code-toggle >}}
|
{{</ code-toggle >}}
|
||||||
|
@ -157,7 +157,7 @@ Any node or section can pass down to descendants a set of front matter values as
|
||||||
|
|
||||||
The `cascade` block can be a slice with a optional `_target` keyword, allowing for multiple `cascade` values targeting different page sets.
|
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 >}}
|
{{< code-toggle >}}
|
||||||
title ="Blog"
|
title ="Blog"
|
||||||
[[cascade]]
|
[[cascade]]
|
||||||
background = "yosemite.jpg"
|
background = "yosemite.jpg"
|
||||||
|
@ -187,11 +187,17 @@ environment
|
||||||
|
|
||||||
Any of the above can be omitted.
|
Any of the above can be omitted.
|
||||||
|
|
||||||
|
{{% note %}}
|
||||||
|
When making a site that supports multiple languages, defining a `[[cascade]]` is recommended to be done in [Site Config](../../getting-started/configuration/#cascade) to prevent duplication.
|
||||||
|
|
||||||
|
If you instea define a `[[cascade]]` in front matter for multiple languages, an `content/XX/foo/_index.md` file needs to be made on a per-language basis, with `XX` the glob pattern matching the Page's language. In this case, the **lang** keyword is ignored.
|
||||||
|
{{% /note %}}
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
In `content/blog/_index.md`
|
In `content/blog/_index.md`
|
||||||
|
|
||||||
{{< code-toggle copy=false >}}
|
{{< code-toggle >}}
|
||||||
title: Blog
|
title: Blog
|
||||||
cascade:
|
cascade:
|
||||||
banner: images/typewriter.jpg
|
banner: images/typewriter.jpg
|
||||||
|
@ -219,13 +225,12 @@ It's possible to set some options for Markdown rendering in a content's front ma
|
||||||
[variables]: /variables/
|
[variables]: /variables/
|
||||||
[aliases]: /content-management/urls/#aliases
|
[aliases]: /content-management/urls/#aliases
|
||||||
[archetype]: /content-management/archetypes/
|
[archetype]: /content-management/archetypes/
|
||||||
[bylinktitle]: /templates/lists/#by-link-title
|
|
||||||
[config]: /getting-started/configuration/
|
[config]: /getting-started/configuration/
|
||||||
[content type]: /content-management/types/
|
[content type]: /content-management/types/
|
||||||
[contentorg]: /content-management/organization/
|
[contentorg]: /content-management/organization/
|
||||||
[headless-bundle]: /content-management/page-bundles/#headless-bundle
|
[headless-bundle]: /content-management/page-bundles/#headless-bundle
|
||||||
[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
|
[json]: https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
|
||||||
[lists]: /templates/lists/#order-content
|
[lists]: /templates/lists/#sort-content
|
||||||
[lookup]: /templates/lookup-order/
|
[lookup]: /templates/lookup-order/
|
||||||
[ordering]: /templates/lists/
|
[ordering]: /templates/lists/
|
||||||
[outputs]: /templates/output-formats/
|
[outputs]: /templates/output-formats/
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
title: Image processing
|
title: Image processing
|
||||||
description: Resize, crop, rotate, filter, and convert images.
|
description: Resize, crop, rotate, filter, and convert images.
|
||||||
categories: [fundamentals,content management]
|
categories: [content management,fundamentals]
|
||||||
keywords: [resources, images]
|
keywords: [resources,images]
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
parent: content-management
|
parent: content-management
|
||||||
|
@ -10,6 +10,7 @@ menu:
|
||||||
toc: true
|
toc: true
|
||||||
weight: 90
|
weight: 90
|
||||||
---
|
---
|
||||||
|
|
||||||
## Image resources
|
## Image resources
|
||||||
|
|
||||||
To process an image you must access the file as a page resource, global resource, or remote resource.
|
To process an image you must access the file as a page resource, global resource, or remote resource.
|
||||||
|
@ -50,7 +51,7 @@ To access an image as a global resource:
|
||||||
|
|
||||||
### Remote resource
|
### Remote resource
|
||||||
|
|
||||||
A remote resource is a file on a remote server, accessible via http or https. To access an image as a remote resource:
|
A remote resource is a file on a remote server, accessible via HTTP or HTTPS. To access an image as a remote resource:
|
||||||
|
|
||||||
```go-html-template
|
```go-html-template
|
||||||
{{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }}
|
{{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }}
|
||||||
|
@ -104,15 +105,15 @@ Example 4: Skips rendering if there's problem accessing a remote resource.
|
||||||
The `image` resource implements the [`Process`], [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods.
|
The `image` resource implements the [`Process`], [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods.
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the [`Exif`] method with the _original_ image to extract EXIF metadata from JPEG or TIFF images.
|
Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG or TIFF images.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
### Process
|
### Process
|
||||||
|
|
||||||
{{< new-in "0.119.0" >}}
|
{{< new-in 0.119.0 >}}
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
The `Process` method is also available as a filter, which is more effective if need to apply multiple filters to an image. See [Process filter](/functions/images/#process).
|
The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
|
Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
|
||||||
|
@ -139,10 +140,9 @@ Some more examples:
|
||||||
{{ $image := $image.Process "fill 600x400" }}
|
{{ $image := $image.Process "fill 600x400" }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
### Resize
|
### Resize
|
||||||
|
|
||||||
Resize an image to the specified width and/or height.
|
Resize an image to the given width and/or height.
|
||||||
|
|
||||||
If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio.
|
If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio.
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ Sometimes it can be useful to create the filter chain once and then reuse it.
|
||||||
|
|
||||||
### Colors
|
### Colors
|
||||||
|
|
||||||
{{< new-in "0.104.0" >}}
|
{{< new-in 0.104.0 >}}
|
||||||
|
|
||||||
`.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method.
|
`.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method.
|
||||||
|
|
||||||
|
@ -215,7 +215,6 @@ Sometimes it can be useful to create the filter chain once and then reuse it.
|
||||||
|
|
||||||
This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image.
|
This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image.
|
||||||
|
|
||||||
|
|
||||||
### EXIF
|
### EXIF
|
||||||
|
|
||||||
Provides an [EXIF] object containing image metadata.
|
Provides an [EXIF] object containing image metadata.
|
||||||
|
@ -266,7 +265,7 @@ You may also access EXIF fields individually, using the [`lang.FormatNumber`] fu
|
||||||
|
|
||||||
## Image processing options
|
## Image processing options
|
||||||
|
|
||||||
The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-separated, case-insensitive list of options. The order of the options within the list is irrelevant.
|
The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-delimited, case-insensitive list of options. The order of the options within the list is irrelevant.
|
||||||
|
|
||||||
### Dimensions
|
### Dimensions
|
||||||
|
|
||||||
|
@ -347,9 +346,9 @@ The default value is 75. You may override the default value in the [site configu
|
||||||
|
|
||||||
### Hint
|
### Hint
|
||||||
|
|
||||||
<!-- Specifies a libwebp preset, not a libwebp image hint. -->
|
Applicable to WebP images, this option corresponds to a set of predefined encoding parameters, and is equivalent to the `-preset` flag for the [`cwebp`] encoder.
|
||||||
|
|
||||||
Applicable to WebP images, this option corresponds to a set of predefined encoding parameters.
|
[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
|
||||||
|
|
||||||
Value|Example
|
Value|Example
|
||||||
:--|:--
|
:--|:--
|
||||||
|
@ -369,7 +368,7 @@ The default value is `photo`. You may override the default value in the [site co
|
||||||
|
|
||||||
When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image.
|
When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image.
|
||||||
|
|
||||||
Use either a 3-digit or a 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`).
|
Use either a 3-digit or 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`).
|
||||||
|
|
||||||
The default value is `#ffffff` (white). You may override the default value in the [site configuration].
|
The default value is `#ffffff` (white). You may override the default value in the [site configuration].
|
||||||
|
|
||||||
|
@ -402,28 +401,26 @@ See [github.com/disintegration/imaging] for the complete list of resampling filt
|
||||||
|
|
||||||
_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_
|
_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_
|
||||||
|
|
||||||
{{< imgproc sunset Resize "300x" />}}
|
{{< imgproc "sunset.jpg" "resize 300x" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Fill "90x120 left" />}}
|
{{< imgproc "sunset.jpg" "fill 90x120 left" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Fill "90x120 right" />}}
|
{{< imgproc "sunset.jpg" "fill 90x120 right" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Fit "90x90" />}}
|
{{< imgproc "sunset.jpg" "fit 90x90" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Crop "250x250 center" />}}
|
{{< imgproc "sunset.jpg" "crop 250x250 center" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Resize "300x q10" />}}
|
{{< imgproc "sunset.jpg" "resize 300x q10" />}}
|
||||||
|
|
||||||
This is the shortcode used to generate the examples above:
|
This is the shortcode used to generate the examples above:
|
||||||
|
|
||||||
{{< code file="layouts/shortcodes/imgproc.html" >}}
|
{{< readfile file=layouts/shortcodes/imgproc.html highlight=go-html-template >}}
|
||||||
{{< readfile file="layouts/shortcodes/imgproc.html" >}}
|
|
||||||
{{< /code >}}
|
|
||||||
|
|
||||||
Call the shortcode from your Markdown like this:
|
Call the shortcode from your Markdown like this:
|
||||||
|
|
||||||
```go-html-template
|
```go-html-template
|
||||||
{{</* imgproc sunset Resize "300x" /*/>}}
|
{{</* imgproc "sunset.jpg" "resize 300x" /*/>}}
|
||||||
```
|
```
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
|
@ -436,7 +433,7 @@ Note the self-closing shortcode syntax above. You may call the `imgproc` shortco
|
||||||
|
|
||||||
Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options).
|
Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options).
|
||||||
|
|
||||||
{{< code-toggle config="imaging" />}}
|
{{< code-toggle config=imaging />}}
|
||||||
|
|
||||||
anchor
|
anchor
|
||||||
: See image processing options: [anchor](#anchor).
|
: See image processing options: [anchor](#anchor).
|
||||||
|
@ -457,7 +454,7 @@ resampleFilter
|
||||||
|
|
||||||
Define an `imaging.exif` section in your site configuration to control the availability of EXIF data.
|
Define an `imaging.exif` section in your site configuration to control the availability of EXIF data.
|
||||||
|
|
||||||
{{< code-toggle file="hugo" copy=true >}}
|
{{< code-toggle file=hugo >}}
|
||||||
[imaging.exif]
|
[imaging.exif]
|
||||||
includeFields = ""
|
includeFields = ""
|
||||||
excludeFields = ""
|
excludeFields = ""
|
||||||
|
@ -478,7 +475,9 @@ includeFields
|
||||||
: Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is `""`. To include all available tags, set this value to `".*"`.
|
: Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is `""`. To include all available tags, set this value to `".*"`.
|
||||||
|
|
||||||
{{% note %}}
|
{{% note %}}
|
||||||
To improve performance and decrease cache size, if you set neither `excludeFields` nor `includeFields`, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
|
To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
|
||||||
|
|
||||||
|
To control tag availability, change the `excludeFields` or `includeFields` settings as described above.
|
||||||
{{% /note %}}
|
{{% /note %}}
|
||||||
|
|
||||||
## Smart cropping of images
|
## Smart cropping of images
|
||||||
|
@ -487,9 +486,9 @@ By default, Hugo uses the [Smartcrop] library when cropping images with the `Cro
|
||||||
|
|
||||||
Examples using the sunset image from above:
|
Examples using the sunset image from above:
|
||||||
|
|
||||||
{{< imgproc sunset Fill "200x200 smart" />}}
|
{{< imgproc "sunset.jpg" "fill 200x200 smart" />}}
|
||||||
|
|
||||||
{{< imgproc sunset Crop "200x200 smart" />}}
|
{{< imgproc "sunset.jpg" "crop 200x200 smart" />}}
|
||||||
|
|
||||||
## Image processing performance consideration
|
## Image processing performance consideration
|
||||||
|
|
||||||
|
@ -497,7 +496,7 @@ Hugo caches processed images in the `resources` directory. If you include this d
|
||||||
|
|
||||||
If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with:
|
If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with:
|
||||||
|
|
||||||
```bash
|
```sh
|
||||||
hugo --gc
|
hugo --gc
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|