Squashed 'docs/' changes from 3f95a2ace..a393f4cf4
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 8 Mar 2022 18:37:17 +0000 (19:37 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Tue, 8 Mar 2022 18:37:17 +0000 (19:37 +0100)
a393f4cf4 Add a Spellcheck GitHub Action and config
8b6b1c381 netlify: Bump to Hugo 0.93.3
84515c183 Delete deployment-with-nanobox.md
dd45f9899 Fix typos in docs
e69de81a9 Update build-options.md
7745b7891 netlify: Hubo 0.93.2
037d63364 Clarify GitHub Pages Branches
94660c34b add missing %s
325de15e2 fix link to latest release note since the release notes were moved to GitHub: https://gohugo.io/news/no-more-releasenotes-here/
dbff41d01 Update introduction.md
0ecd627f7 netlify: Hugo 0.93.1
a74e16582 Update diagrams.md
33e310956 Add Goat example to test styling
fa0100a5b Update diagrams.md
64ac75367 Adjust diagram docs
f1d600044 Update theme
95bedff1a netlify: Bump to Hugo 0.93.0
849a8437f Merge commit 'c1398b91a9f4c67876b31feb67516b252e654d3c'
c0c60c43c docs: Regenerate docs helper
2c63fe518 cod: Regen CLI docs
f33ba4e5a CodeblockContext method renames
979b47968 Move the Goat template to the correct place
2df37e9e8 Add Markdown diagrams and render hooks for code blocks
bd8037d43 Allow images to be cropped without being resized
8b2af4b49 modules: Add modules.Workspace config for Go 1.18
46b99dea1 Add --printUnusedTemplates
1285302c9 commands: Rename --i18n-warnings to printI18nWarnings
dea2242c6 commands: Rename --path-warnings, --print-men to --printPathWarnings, --printMemoryUsage
db782ea46 deps: Update github.com/alecthomas/chroma v0.9.4 => v0.10.0

git-subtree-dir: docs
git-subtree-split: a393f4cf43829011e96d109de2f039a9b05b2d16

37 files changed:
.cspell.json [new file with mode: 0644]
.github/workflows/spellcheck.yml [new file with mode: 0644]
_vendor/github.com/gohugoio/gohugoioTheme/layouts/_default/baseof.html
_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/after-body-start.html [new file with mode: 0644]
_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/before-body-end.html [new file with mode: 0644]
_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/site-nav.html
_vendor/modules.txt
content/en/commands/hugo.md
content/en/commands/hugo_completion.md
content/en/commands/hugo_completion_bash.md
content/en/commands/hugo_completion_fish.md
content/en/commands/hugo_completion_powershell.md
content/en/commands/hugo_completion_zsh.md
content/en/commands/hugo_mod.md
content/en/commands/hugo_new.md
content/en/commands/hugo_server.md
content/en/content-management/build-options.md
content/en/content-management/comments.md
content/en/content-management/diagrams.md [new file with mode: 0644]
content/en/content-management/image-processing/index.md
content/en/hosting-and-deployment/deployment-with-nanobox.md [deleted file]
content/en/hosting-and-deployment/hosting-on-github.md
content/en/hugo-modules/configuration.md
content/en/hugo-pipes/introduction.md
content/en/news/0.15-relnotes/index.md
content/en/news/0.20-relnotes/index.md
content/en/news/0.22-relnotes/index.md
content/en/news/0.46-relnotes/index.md
data/docs.json
go.mod
go.sum
layouts/_default/_markup/render-codeblock-mermaid.html [new file with mode: 0644]
layouts/partials/hooks/before-body-end.html [new file with mode: 0644]
layouts/shortcodes/imgproc.html
layouts/shortcodes/new-in.html
netlify.toml
static/img/examples/trees.svg [new file with mode: 0644]

diff --git a/.cspell.json b/.cspell.json
new file mode 100644 (file)
index 0000000..70811e5
--- /dev/null
@@ -0,0 +1,155 @@
+{
+  "version": "0.2",
+  "words": [
+    "aabb",
+    "aabba",
+    "aabbaa",
+    "aabbaabb",
+    "abourget",
+    "adoc",
+    "algolia",
+    "anchorize",
+    "anthonyfok",
+    "asciidoctor",
+    "attrlink",
+    "Bjørn",
+    "blackfriday",
+    "blogue",
+    "bogem",
+    "Brotli",
+    "canonify",
+    "Catwoman",
+    "Cheatsheet",
+    "chromastyles",
+    "clockoon",
+    "Cloudinary",
+    "CNAME",
+    "Codecademy's",
+    "CODEOWNERS",
+    "Commento",
+    "Cond",
+    "Contentful",
+    "countrunes",
+    "countwords",
+    "crossreferences",
+    "digitalcraftsman",
+    "Disqus",
+    "dokuwiki",
+    "DRING",
+    "Emojify",
+    "Enwrite",
+    "eparis",
+    "errorf",
+    "firstpost",
+    "Francia",
+    "freenode",
+    "funcs",
+    "funcsig",
+    "Garen",
+    "Getenv",
+    "Gohugo",
+    "gohugoio",
+    "goldenbridge",
+    "Goldmark",
+    "gomodules",
+    "GOPATH",
+    "govendor",
+    "Gowans",
+    "Grayscale",
+    "Gruber",
+    "gtag",
+    "Hokus",
+    "hugodoc",
+    "hugolang",
+    "hugoversion",
+    "Hyvor",
+    "iframes",
+    "imgproc",
+    "indice",
+    "Intelli",
+    "interdoc",
+    "IPTC",
+    "Isset",
+    "Isso",
+    "Joomla",
+    "jsonify",
+    "katex",
+    "kubernetes",
+    "lastmod",
+    "linktitle",
+    "markdownified",
+    "markdownify",
+    "mathjax",
+    "mercredi",
+    "Mittwoch",
+    "mmark",
+    "monokai",
+    "Morling",
+    "Muut",
+    "mypartials",
+    "mypost",
+    "needsexample",
+    "nobr",
+    "nocopy",
+    "Norsk",
+    "novembre",
+    "Octopress",
+    "opengraph",
+    "OWASP",
+    "Pandoc",
+    "peaceiris",
+    "Pedersen",
+    "plainify",
+    "println",
+    "publishdate",
+    "Pygments",
+    "querify",
+    "readfile",
+    "REDIR",
+    "reftext",
+    "relatedfuncs",
+    "relref",
+    "remarkjs",
+    "rgba",
+    "rlimit",
+    "safejs",
+    "Samsa",
+    "Shortcode",
+    "Shortcodes",
+    "Sindre",
+    "Smartcrop",
+    "struct",
+    "Talkyard",
+    "taxo",
+    "tbody",
+    "tdewolff",
+    "testshortcodes",
+    "thead",
+    "Thinkful",
+    "TMPDIR",
+    "tojson",
+    "Torikian",
+    "totoml",
+    "toyaml",
+    "Unmarshal",
+    "urlize",
+    "vimrc",
+    "wanghc",
+    "Wappalyzer",
+    "warnf",
+    "webp",
+    "wibble",
+    "workson",
+    "zzbbaabb"
+  ],
+  "language": "en,en-GB,en-US,de,fr",
+  "files": [
+    "**/*.md"
+  ],
+  "ignorePaths": [
+    ".cspell.json",
+    "**/node_modules/**",
+    "*.min.*"
+  ],
+  "useGitignore": true
+}
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
new file mode 100644 (file)
index 0000000..0129bbb
--- /dev/null
@@ -0,0 +1,17 @@
+name: 'Check spelling'
+on: # rebuild any PRs and main branch changes
+  push:
+    branches-ignore:
+      - "dependabot/**"
+  pull_request:
+
+jobs:
+  spellcheck:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+      - uses: streetsidesoftware/cspell-action@3bc52c39528d0214a947ff7f8b5c23ad3273435b
+        with:
+          inline: warning
+          strict: false
+          incremental_files_only: true
index 47019072c2dce0dfc5b6f7a172be00375d128fdc..04261a88609448d9b843b20fdf0adc2ff724301e 100644 (file)
@@ -58,6 +58,7 @@
 </head>
 
 <body class="ma0 sans-serif bg-primary-color-light{{ with getenv "HUGO_ENV" }} {{ . }}{{ end }}">
+  {{ partial "hooks/after-body-start" . }}
   {{ block "nav" . }}{{ partial "site-nav.html" . }}{{ end }}
   {{ block "header" . }}{{ end }}
   <main role="main" class="content-with-sidebar min-vh-100 pb7 pb0-ns">
@@ -65,6 +66,9 @@
   </main>
 
   {{ block "footer" . }}{{ partialCached "site-footer.html" . }}{{ end }}
+  
+  {{ partial "hooks/before-body-end" . }}
+  
 
 </body>
 
diff --git a/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/after-body-start.html b/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/after-body-start.html
new file mode 100644 (file)
index 0000000..426abd0
--- /dev/null
@@ -0,0 +1 @@
+{{/* Deliberately empty */}}
diff --git a/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/before-body-end.html b/_vendor/github.com/gohugoio/gohugoioTheme/layouts/partials/hooks/before-body-end.html
new file mode 100644 (file)
index 0000000..426abd0
--- /dev/null
@@ -0,0 +1 @@
+{{/* Deliberately empty */}}
index 0266c9939eb9713bbca0958d490f24efdf006eeb..749c699e6cff32da0cab604e046493acdbcaeee1 100644 (file)
@@ -8,7 +8,7 @@
          HUGO
       </a>
     </h1>
-    <ul class="list ma0 pa0 dn dib-l">
+    <ul class="list ma0 pa0 dn dib-l" role="menu">
       {{ range .Site.Menus.global }}
         <li class="f5 dib mr4" role="menuitem">
             {{/* TODO: Create an "Global" active class to show which site one is currently at */}}
index a0b2c4e28d9c2c5fb682eaee80b6eec513c40aac..b755ed7f647312746211bec84b1b8aba2d59c35b 100644 (file)
@@ -1 +1 @@
-# github.com/gohugoio/gohugoioTheme v0.0.0-20211211134334-0fe25799bb58
+# github.com/gohugoio/gohugoioTheme v0.0.0-20220228085601-7cfbda06d135
index 827bb89e6cbedb3ea8452887ba96b9cae70e4b38..df32da7931f4db9698e3ac816b44be734d6f1ae6 100644 (file)
@@ -35,12 +35,11 @@ hugo [flags]
       --debug                      debug output
   -d, --destination string         filesystem path to write files to
       --disableKinds strings       disable different kind of pages (home, RSS etc.)
-      --enableGitInfo              add Git revision, date and author info to the pages
+      --enableGitInfo              add Git revision, date, author, and CODEOWNERS info to the pages
   -e, --environment string         build environment
       --forceSyncStatic            copy all files when static is changed.
       --gc                         enable to run some cleanup tasks (remove unused cache files) after the build
   -h, --help                       help for hugo
-      --i18n-warnings              print missing translations
       --ignoreCache                ignores the cache directory
       --ignoreVendorPaths string   ignores any _vendor for module paths matching the given Glob pattern
   -l, --layoutDir string           filesystem path to layout directory
@@ -50,9 +49,11 @@ hugo [flags]
       --noChmod                    don't sync permission mode of files
       --noTimes                    don't sync modification time of files
       --panicOnWarning             panic on first WARNING log
-      --path-warnings              print warnings on duplicate target paths etc.
       --poll string                set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
-      --print-mem                  print memory usage to screen at intervals
+      --printI18nWarnings          print missing translations
+      --printMemoryUsage           print memory usage to screen at intervals
+      --printPathWarnings          print warnings on duplicate target paths etc.
+      --printUnusedTemplates       print warnings on unused templates.
       --quiet                      build in quiet mode
       --renderToMemory             render to memory (only useful for benchmark testing)
   -s, --source string              filesystem path to read files relative from
@@ -68,7 +69,7 @@ hugo [flags]
 
 ### SEE ALSO
 
-* [hugo completion](/commands/hugo_completion/)         - generate the autocompletion script for the specified shell
+* [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 * [hugo config](/commands/hugo_config/)         - Print the site configuration
 * [hugo convert](/commands/hugo_convert/)       - Convert your content to different formats
 * [hugo deploy](/commands/hugo_deploy/)         - Deploy your site to a Cloud provider.
index 944021d086104b16e65e53a35434cf0d5c3eb093..c5e70cdd78320a289a0151fbc2372acc8eb7a03f 100644 (file)
@@ -5,11 +5,10 @@ url: /commands/hugo_completion/
 ---
 ## hugo completion
 
-generate the autocompletion script for the specified shell
+Generate the autocompletion script for the specified shell
 
 ### Synopsis
 
-
 Generate the autocompletion script for hugo for the specified shell.
 See each sub-command's help for details on how to use the generated script.
 
@@ -40,8 +39,8 @@ See each sub-command's help for details on how to use the generated script.
 ### SEE ALSO
 
 * [hugo](/commands/hugo/)       - hugo builds your site
-* [hugo completion bash](/commands/hugo_completion_bash/)       - generate the autocompletion script for bash
-* [hugo completion fish](/commands/hugo_completion_fish/)       - generate the autocompletion script for fish
-* [hugo completion powershell](/commands/hugo_completion_powershell/)   - generate the autocompletion script for powershell
-* [hugo completion zsh](/commands/hugo_completion_zsh/)         - generate the autocompletion script for zsh
+* [hugo completion bash](/commands/hugo_completion_bash/)       - Generate the autocompletion script for bash
+* [hugo completion fish](/commands/hugo_completion_fish/)       - Generate the autocompletion script for fish
+* [hugo completion powershell](/commands/hugo_completion_powershell/)   - Generate the autocompletion script for powershell
+* [hugo completion zsh](/commands/hugo_completion_zsh/)         - Generate the autocompletion script for zsh
 
index 4d5a69277630e20995cde40d2a0ec4bdeca6119c..e83c39836bafbc36fe31f087d081b325b9e14132 100644 (file)
@@ -5,27 +5,31 @@ url: /commands/hugo_completion_bash/
 ---
 ## hugo completion bash
 
-generate the autocompletion script for bash
+Generate the autocompletion script for bash
 
 ### Synopsis
 
-
 Generate the autocompletion script for the bash shell.
 
 This script depends on the 'bash-completion' package.
 If it is not installed already, you can install it via your OS's package manager.
 
 To load completions in your current shell session:
-$ source <(hugo completion bash)
+
+       source <(hugo completion bash)
 
 To load completions for every new session, execute once:
-Linux:
-  $ hugo completion bash > /etc/bash_completion.d/hugo
-MacOS:
-  $ hugo completion bash > /usr/local/etc/bash_completion.d/hugo
+
+#### Linux:
+
+       hugo completion bash > /etc/bash_completion.d/hugo
+
+#### macOS:
+
+       hugo completion bash > /usr/local/etc/bash_completion.d/hugo
 
 You will need to start a new shell for this setup to take effect.
-  
+
 
 ```
 hugo completion bash
@@ -57,5 +61,5 @@ hugo completion bash
 
 ### SEE ALSO
 
-* [hugo completion](/commands/hugo_completion/)         - generate the autocompletion script for the specified shell
+* [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 
index 0d23874107a08188dc73b76d4f04fcc2d5cb1642..07f39b4baac473979a5275cc28c2bdadec0f6b68 100644 (file)
@@ -5,18 +5,19 @@ url: /commands/hugo_completion_fish/
 ---
 ## hugo completion fish
 
-generate the autocompletion script for fish
+Generate the autocompletion script for fish
 
 ### Synopsis
 
-
 Generate the autocompletion script for the fish shell.
 
 To load completions in your current shell session:
-$ hugo completion fish | source
+
+       hugo completion fish | source
 
 To load completions for every new session, execute once:
-$ hugo completion fish > ~/.config/fish/completions/hugo.fish
+
+       hugo completion fish > ~/.config/fish/completions/hugo.fish
 
 You will need to start a new shell for this setup to take effect.
 
@@ -51,5 +52,5 @@ hugo completion fish [flags]
 
 ### SEE ALSO
 
-* [hugo completion](/commands/hugo_completion/)         - generate the autocompletion script for the specified shell
+* [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 
index ab45bbcc73b8d13933c8f74652ea5537a5400e60..990f522e6c963b8abbb89f3209089523e0ca9c09 100644 (file)
@@ -5,15 +5,15 @@ url: /commands/hugo_completion_powershell/
 ---
 ## hugo completion powershell
 
-generate the autocompletion script for powershell
+Generate the autocompletion script for powershell
 
 ### Synopsis
 
-
 Generate the autocompletion script for powershell.
 
 To load completions in your current shell session:
-PS C:\> hugo completion powershell | Out-String | Invoke-Expression
+
+       hugo completion powershell | Out-String | Invoke-Expression
 
 To load completions for every new session, add the output of the above command
 to your powershell profile.
@@ -49,5 +49,5 @@ hugo completion powershell [flags]
 
 ### SEE ALSO
 
-* [hugo completion](/commands/hugo_completion/)         - generate the autocompletion script for the specified shell
+* [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 
index 06fb7507edb8b5b5d27735b8c4bd1ce7355387aa..7088d4d320c0663200e7a225a7ca4d981fe0855e 100644 (file)
@@ -5,23 +5,26 @@ url: /commands/hugo_completion_zsh/
 ---
 ## hugo completion zsh
 
-generate the autocompletion script for zsh
+Generate the autocompletion script for zsh
 
 ### Synopsis
 
-
 Generate the autocompletion script for the zsh shell.
 
 If shell completion is not already enabled in your environment you will need
 to enable it.  You can execute the following once:
 
-$ echo "autoload -U compinit; compinit" >> ~/.zshrc
+       echo "autoload -U compinit; compinit" >> ~/.zshrc
 
 To load completions for every new session, execute once:
-# Linux:
-$ hugo completion zsh > "${fpath[1]}/_hugo"
-# macOS:
-$ hugo completion zsh > /usr/local/share/zsh/site-functions/_hugo
+
+#### Linux:
+
+       hugo completion zsh > "${fpath[1]}/_hugo"
+
+#### macOS:
+
+       hugo completion zsh > /usr/local/share/zsh/site-functions/_hugo
 
 You will need to start a new shell for this setup to take effect.
 
@@ -56,5 +59,5 @@ hugo completion zsh [flags]
 
 ### SEE ALSO
 
-* [hugo completion](/commands/hugo_completion/)         - generate the autocompletion script for the specified shell
+* [hugo completion](/commands/hugo_completion/)         - Generate the autocompletion script for the specified shell
 
index 7b620cd3e5a7462cddc69b45fd1d70b7a432395b..66a076322fdd5177755d9646b34cec4eac57211f 100644 (file)
@@ -35,20 +35,21 @@ See https://gohugo.io/hugo-modules/ for more information.
   -c, --contentDir string      filesystem path to content directory
   -d, --destination string     filesystem path to write files to
       --disableKinds strings   disable different kind of pages (home, RSS etc.)
-      --enableGitInfo          add Git revision, date and author info to the pages
+      --enableGitInfo          add Git revision, date, author, and CODEOWNERS info to the pages
       --forceSyncStatic        copy all files when static is changed.
       --gc                     enable to run some cleanup tasks (remove unused cache files) after the build
   -h, --help                   help for mod
-      --i18n-warnings          print missing translations
       --ignoreCache            ignores the cache directory
   -l, --layoutDir string       filesystem path to layout directory
       --minify                 minify any supported output format (HTML, XML etc.)
       --noChmod                don't sync permission mode of files
       --noTimes                don't sync modification time of files
       --panicOnWarning         panic on first WARNING log
-      --path-warnings          print warnings on duplicate target paths etc.
       --poll string            set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
-      --print-mem              print memory usage to screen at intervals
+      --printI18nWarnings      print missing translations
+      --printMemoryUsage       print memory usage to screen at intervals
+      --printPathWarnings      print warnings on duplicate target paths etc.
+      --printUnusedTemplates   print warnings on unused templates.
       --templateMetrics        display metrics about template executions
       --templateMetricsHints   calculate some improvement hints when combined with --templateMetrics
   -t, --theme strings          themes to use (located in /themes/THEMENAME/)
index 018cd2af8df3155165ea026817ce380d4864a379..36a841b96a7569ac084a72619fe41dfac5793b6b 100644 (file)
@@ -35,11 +35,10 @@ hugo new [path] [flags]
   -d, --destination string     filesystem path to write files to
       --disableKinds strings   disable different kind of pages (home, RSS etc.)
       --editor string          edit new content with this editor, if provided
-      --enableGitInfo          add Git revision, date and author info to the pages
+      --enableGitInfo          add Git revision, date, author, and CODEOWNERS info to the pages
       --forceSyncStatic        copy all files when static is changed.
       --gc                     enable to run some cleanup tasks (remove unused cache files) after the build
   -h, --help                   help for new
-      --i18n-warnings          print missing translations
       --ignoreCache            ignores the cache directory
   -k, --kind string            content type to create
   -l, --layoutDir string       filesystem path to layout directory
@@ -47,9 +46,11 @@ hugo new [path] [flags]
       --noChmod                don't sync permission mode of files
       --noTimes                don't sync modification time of files
       --panicOnWarning         panic on first WARNING log
-      --path-warnings          print warnings on duplicate target paths etc.
       --poll string            set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
-      --print-mem              print memory usage to screen at intervals
+      --printI18nWarnings      print missing translations
+      --printMemoryUsage       print memory usage to screen at intervals
+      --printPathWarnings      print warnings on duplicate target paths etc.
+      --printUnusedTemplates   print warnings on unused templates.
       --templateMetrics        display metrics about template executions
       --templateMetricsHints   calculate some improvement hints when combined with --templateMetrics
   -t, --theme strings          themes to use (located in /themes/THEMENAME/)
index 524340f8262e38ef0ed3d6d0a527b38eb5aff51b..cd9a85cac2c2089658e66a190857d6e97c89a48c 100644 (file)
@@ -43,11 +43,10 @@ hugo server [flags]
       --disableFastRender      enables full re-renders on changes
       --disableKinds strings   disable different kind of pages (home, RSS etc.)
       --disableLiveReload      watch without enabling live browser reload on rebuild
-      --enableGitInfo          add Git revision, date and author info to the pages
+      --enableGitInfo          add Git revision, date, author, and CODEOWNERS info to the pages
       --forceSyncStatic        copy all files when static is changed.
       --gc                     enable to run some cleanup tasks (remove unused cache files) after the build
   -h, --help                   help for server
-      --i18n-warnings          print missing translations
       --ignoreCache            ignores the cache directory
   -l, --layoutDir string       filesystem path to layout directory
       --liveReloadPort int     port for live reloading (i.e. 443 in HTTPS proxy situations) (default -1)
@@ -59,10 +58,12 @@ hugo server [flags]
       --noHTTPCache            prevent HTTP caching
       --noTimes                don't sync modification time of files
       --panicOnWarning         panic on first WARNING log
-      --path-warnings          print warnings on duplicate target paths etc.
       --poll string            set this to a poll interval, e.g --poll 700ms, to use a poll based approach to watch for file system changes
   -p, --port int               port on which the server will listen (default 1313)
-      --print-mem              print memory usage to screen at intervals
+      --printI18nWarnings      print missing translations
+      --printMemoryUsage       print memory usage to screen at intervals
+      --printPathWarnings      print warnings on duplicate target paths etc.
+      --printUnusedTemplates   print warnings on unused templates.
       --renderToDisk           render to Destination path (default is render to memory & serve from there)
       --templateMetrics        display metrics about template executions
       --templateMetricsHints   calculate some improvement hints when combined with --templateMetrics
index 93da7c4214d1bccecc75bb0a210d3f5c7fe19864..c3f6f04c941b5e94cd14bb58413759829020d917 100644 (file)
@@ -18,12 +18,12 @@ toc: true
 
 They are stored in a reserved Front Matter object named `_build` with the following defaults:
 
-```yaml
+{{< code-toggle >}}
 _build:
   render: always
   list: always
   publishResources: true
-```
+{{< /code-toggle >}}
 
 #### render
 If `always`, the page will be treated as a published page, holding its dedicated output files (`index.html`, etc...) and permalink.
index bbeb21ada08a41800fc2eeaf3830672108d0b732..311f24c14c7f60e69b7b87cd5201bb684001c5ae 100644 (file)
@@ -30,7 +30,7 @@ Hugo comes with all the code you need to load Disqus into your templates. Before
 Disqus comments require you set a single value in your [site's configuration file][configuration] like so:
 
 {{< code-toggle copy="false" >}}
-disqusShortname = "yourdiscussshortname"
+disqusShortname = "yourDisqusShortname"
 {{</ code-toggle >}}
 
 For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter][] of a single content file:
diff --git a/content/en/content-management/diagrams.md b/content/en/content-management/diagrams.md
new file mode 100644 (file)
index 0000000..cfc0b36
--- /dev/null
@@ -0,0 +1,277 @@
+---
+title: Diagrams
+date: 2022-02-20
+categories: [content management]
+keywords: [diagrams,drawing]
+menu:
+  docs:
+    parent: "content-management"
+    weight: 22
+weight: 22
+toc: true
+---
+
+
+{{< new-in "0.93.0" >}}
+
+
+## GoAT Diagrams (Ascii)
+
+Hugo supports [GoAT](https://github.com/bep/goat) natively. This means that this code block:
+
+````
+```goat
+      .               .                .               .--- 1          .-- 1     / 1
+     / \              |                |           .---+            .-+         +
+    /   \         .---+---.         .--+--.        |   '--- 2      |   '-- 2   / \ 2
+   +     +        |       |        |       |    ---+            ---+          +
+  / \   / \     .-+-.   .-+-.     .+.     .+.      |   .--- 3      |   .-- 3   \ / 3
+ /   \ /   \    |   |   |   |    |   |   |   |     '---+            '-+         +
+ 1   2 3   4    1   2   3   4    1   2   3   4         '--- 4          '-- 4     \ 4
+
+```
+````
+
+Will be rendered as:
+
+```goat
+
+          .               .                .               .--- 1          .-- 1     / 1
+         / \              |                |           .---+            .-+         +
+        /   \         .---+---.         .--+--.        |   '--- 2      |   '-- 2   / \ 2
+       +     +        |       |        |       |    ---+            ---+          +
+      / \   / \     .-+-.   .-+-.     .+.     .+.      |   .--- 3      |   .-- 3   \ / 3
+     /   \ /   \    |   |   |   |    |   |   |   |     '---+            '-+         +
+     1   2 3   4    1   2   3   4    1   2   3   4         '--- 4          '-- 4     \ 4
+```
+
+
+
+
+
+## Mermaid Diagrams
+
+Hugo currently does not provide default templates for Mermaid diagrams. But you can easily add your own. One way to do it would be to create ` layouts/_default/_markup/render-codeblock-mermaid.html`:
+
+
+```go-html-template
+<div class="mermaid">
+  {{- .Inner | safeHTML }}
+</div>
+{{ .Page.Store.Set "hasMermaid" true }}
+```
+
+And then include this snippet at the bottom of the content template (below `.Content`):
+
+```go-html-template
+{{ if .Page.Store.Get "hasMermaid" }}
+  <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
+  <script>
+    mermaid.initialize({ startOnLoad: true });
+  </script>
+{{ end }}
+```
+
+With that you can use the `mermaid` language in Markdown code blocks:
+
+```mermaid
+sequenceDiagram
+    participant Alice
+    participant Bob
+    Alice->>John: Hello John, how are you?
+    loop Healthcheck
+        John->>John: Fight against hypochondria
+    end
+    Note right of John: Rational thoughts <br/>prevail!
+    John-->>Alice: Great!
+    John->>Bob: How about you?
+    Bob-->>John: Jolly good!
+```
+
+
+
+## Goat Ascii Diagram Examples
+
+### Graphics
+
+```goat
+                                                                             .
+    0       3                          P *              Eye /         ^     /
+     *-------*      +y                    \                +)          \   /  Reflection
+  1 /|    2 /|       ^                     \                \           \ v
+   *-------* |       |                v0    \       v3           --------*--------
+   | |4    | |7      |                  *----\-----*
+   | *-----|-*       +-----> +x        /      v X   \          .-.<--------        o
+   |/      |/       /                 /        o     \        | / | Refraction    / \
+   *-------*       v                 /                \        +-'               /   \
+  5       6      +z              v1 *------------------* v2    |                o-----o
+                                                               v
+
+```
+
+### Complex
+
+```goat
++-------------------+                           ^                      .---.
+|    A Box          |__.--.__    __.-->         |      .-.             |   |
+|                   |        '--'               v     | * |<---        |   |
++-------------------+                                  '-'             |   |
+                       Round                                       *---(-. |
+  .-----------------.  .-------.    .----------.         .-------.     | | |
+ |   Mixed Rounded  | |         |  / Diagonals  \        |   |   |     | | |
+ | & Square Corners |  '--. .--'  /              \       |---+---|     '-)-'       .--------.
+ '--+------------+-'  .--. |     '-------+--------'      |   |   |       |        / Search /
+    |            |   |    | '---.        |               '-------'       |       '-+------'
+    |<---------->|   |    |      |       v                Interior                 |     ^
+    '           <---'      '----'   .-----------.              ---.     .---       v     |
+ .------------------.  Diag line    | .-------. +---.              \   /           .     |
+ |   if (a > b)     +---.      .--->| |       | |    | Curved line  \ /           / \    |
+ |   obj->fcn()     |    \    /     | '-------' |<--'                +           /   \   |
+ '------------------'     '--'      '--+--------'      .--. .--.     |  .-.     +Done?+-'
+    .---+-----.                        |   ^           |\ | | /|  .--+ |   |     \   /
+    |   |     | Join        \|/        |   | Curved    | \| |/ | |    \    |      \ /
+    |   |     +---->  o    --o--        '-'  Vertical  '--' '--'  '--  '--'        +  .---.
+ <--+---+-----'       |     /|\                                                    |  | 3 |
+                      v                             not:line    'quotes'        .-'   '---'
+  .-.             .---+--------.            /            A || B   *bold*       |        ^
+ |   |           |   Not a dot  |      <---+---<--    A dash--is not a line    v        |
+  '-'             '---------+--'          /           Nor/is this.            ---
+
+```
+
+### Process
+
+```goat
+                                      .
+   .---------.                       / \
+  |   START   |                     /   \        .-+-------+-.      ___________
+   '----+----'    .-------.    A   /     \   B   | |COMPLEX| |     /           \      .-.
+        |        |   END   |<-----+CHOICE +----->| |       | +--->+ PREPARATION +--->| X |
+        v         '-------'        \     /       | |PROCESS| |     \___________/      '-'
+    .---------.                     \   /        '-+---+---+-'
+   /  INPUT  /                       \ /
+  '-----+---'                         '
+        |                             ^
+        v                             |
+  .-----------.                 .-----+-----.        .-.
+  |  PROCESS  +---------------->|  PROCESS  |<------+ X |
+  '-----------'                 '-----------'        '-'
+```
+
+### File tree
+
+Created from https://arthursonzogni.com/Diagon/#Tree
+
+```goat  { width=300  color="orange" }
+───Linux─┬─Android
+         ├─Debian─┬─Ubuntu─┬─Lubuntu
+         │        │        ├─Kubuntu
+         │        │        ├─Xubuntu
+         │        │        └─Xubuntu
+         │        └─Mint
+         ├─Centos
+         └─Fedora
+```
+
+
+### Sequence Diagram
+
+https://arthursonzogni.com/Diagon/#Sequence
+
+```goat { class="w-40" }
+┌─────┐       ┌───┐
+│Alice│       │Bob│
+└──┬──┘       └─┬─┘
+   │            │  
+   │ Hello Bob! │  
+   │───────────>│  
+   │            │  
+   │Hello Alice!│  
+   │<───────────│  
+┌──┴──┐       ┌─┴─┐
+│Alice│       │Bob│
+└─────┘       └───┘
+
+```
+
+
+### Flowchart
+
+https://arthursonzogni.com/Diagon/#Flowchart
+
+```goat
+   _________________                                                              
+  ╱                 ╲                                                     ┌─────┐ 
+ ╱ DO YOU UNDERSTAND ╲____________________________________________________│GOOD!│ 
+ ╲ FLOW CHARTS?      ╱yes                                                 └──┬──┘ 
+  ╲_________________╱                                                        │    
+           │no                                                               │    
+  _________▽_________                    ______________________              │    
+ ╱                   ╲                  ╱                      ╲    ┌────┐   │    
+╱ OKAY, YOU SEE THE   ╲________________╱ ... AND YOU CAN SEE    ╲___│GOOD│   │    
+╲ LINE LABELED 'YES'? ╱yes             ╲ THE ONES LABELED 'NO'? ╱yes└──┬─┘   │    
+ ╲___________________╱                  ╲______________________╱       │     │    
+           │no                                     │no                 │     │    
+   ________▽_________                     _________▽__________         │     │    
+  ╱                  ╲    ┌───────────┐  ╱                    ╲        │     │    
+ ╱ BUT YOU SEE THE    ╲___│WAIT, WHAT?│ ╱ BUT YOU JUST         ╲___    │     │    
+ ╲ ONES LABELED 'NO'? ╱yes└───────────┘ ╲ FOLLOWED THEM TWICE? ╱yes│   │     │    
+  ╲__________________╱                   ╲____________________╱    │   │     │    
+           │no                                     │no             │   │     │    
+       ┌───▽───┐                                   │               │   │     │    
+       │LISTEN.│                                   └───────┬───────┘   │     │    
+       └───┬───┘                                    ┌──────▽─────┐     │     │    
+     ┌─────▽────┐                                   │(THAT WASN'T│     │     │    
+     │I HATE YOU│                                   │A QUESTION) │     │     │    
+     └──────────┘                                   └──────┬─────┘     │     │    
+                                                      ┌────▽───┐       │     │    
+                                                      │SCREW IT│       │     │    
+                                                      └────┬───┘       │     │    
+                                                           └─────┬─────┘     │    
+                                                                 │           │    
+                                                                 └─────┬─────┘    
+                                                               ┌───────▽──────┐   
+                                                               │LET'S GO DRING│   
+                                                               └───────┬──────┘   
+                                                             ┌─────────▽─────────┐
+                                                             │HEY, I SHOULD TRY  │
+                                                             │INSTALLING FREEBSD!│
+                                                             └───────────────────┘
+
+```
+
+
+### Table
+
+https://arthursonzogni.com/Diagon/#Table
+
+```goat { class="w-80 dark-blue" }
+┌────────────────────────────────────────────────┐
+│                                                │
+├────────────────────────────────────────────────┤
+│SYNTAX     = { PRODUCTION } .                   │
+├────────────────────────────────────────────────┤
+│PRODUCTION = IDENTIFIER "=" EXPRESSION "." .    │
+├────────────────────────────────────────────────┤
+│EXPRESSION = TERM { "|" TERM } .                │
+├────────────────────────────────────────────────┤
+│TERM       = FACTOR { FACTOR } .                │
+├────────────────────────────────────────────────┤
+│FACTOR     = IDENTIFIER                         │
+├────────────────────────────────────────────────┤
+│          | LITERAL                             │
+├────────────────────────────────────────────────┤
+│          | "[" EXPRESSION "]"                  │
+├────────────────────────────────────────────────┤
+│          | "(" EXPRESSION ")"                  │
+├────────────────────────────────────────────────┤
+│          | "{" EXPRESSION "}" .                │
+├────────────────────────────────────────────────┤
+│IDENTIFIER = letter { letter } .                │
+├────────────────────────────────────────────────┤
+│LITERAL    = """" character { character } """" .│
+└────────────────────────────────────────────────┘
+```
+
+
+
index 0211f6fcd0f0f3c89da1673d3ef9211e4f276438..5b8293675690106a76b1a26ff8ca6a6798c3383d 100644 (file)
@@ -39,7 +39,7 @@ The `image` resource can also be retrieved from a [global resource]({{< relref "
 
 ## Image Processing Methods
 
-The `image` resource implements the  `Resize`, `Fit`, `Fill`, and `Filter` methods, each returning a transformed image using the specified dimensions and processing options. 
+The `image` resource implements the  `Resize`, `Fit`, `Fill`, `Crop`, and `Filter` methods, each returning a transformed image using the specified dimensions and processing options. 
 
 {{% note %}}
 Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the [`Exif`](#exif) method with the _original_ image to extract EXIF metadata from JPEG or TIFF images.
@@ -70,12 +70,20 @@ Scale down the image to fit the given dimensions while maintaining aspect ratio.
 
 ### Fill
 
-Resize and crop the image to match the given dimensions. Both height and width are required.
+Crop and resize the image to match the given dimensions. Both height and width are required.
 
 ```go
 {{ $image := $resource.Fill "600x400" }}
 ```
 
+### Crop
+
+Crop the image to match the given dimensions without resizing. Both height and width are required.
+
+```go
+{{ $image := $resource.Crop "400x400" }}
+```
+
 ### Filter
 
 Apply one or more filters to your image. See [Image Filters](/functions/images/#image-filters) for a full list.
@@ -203,7 +211,7 @@ Rotates an image by the given angle counter-clockwise. The rotation will be perf
 
 ### Anchor
 
-Only relevant for the `Fill` method. This is useful for thumbnail generation where the main motive is located in, say, the left corner.
+Only relevant for the `Crop` and `Fill` methods. This is useful for thumbnail generation where the main motive is located in, say, the left corner.
 
 Valid values are `Smart`, `Center`, `TopLeft`, `Top`, `TopRight`, `Left`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`.
 
@@ -249,6 +257,8 @@ _The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pe
 
 {{< imgproc sunset Fit "90x90" />}}
 
+{{< imgproc sunset Crop "250x250 center" />}}
+
 {{< imgproc sunset Resize "300x q10" />}}
 
 This is the shortcode used in the examples above:
@@ -286,7 +296,7 @@ quality = 75
 # Valid values are "picture", "photo", "drawing", "icon", or "text".
 hint = "photo"
 
-# Anchor used when cropping pictures.
+# Anchor used when cropping pictures with either .Fill or .Crop
 # Default is "smart" which does Smart Cropping, using https://github.com/muesli/smartcrop
 # Smart Cropping is content aware and tries to find the best crop for each image.
 # Valid values are Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight
@@ -323,12 +333,14 @@ disableLatLong = false
 
 ## Smart Cropping of Images
 
-By default, Hugo will use [Smartcrop](https://github.com/muesli/smartcrop), a library created by [muesli](https://github.com/muesli), when cropping images with `.Fill`. You can set the anchor point manually, but in most cases the smart option will make a good choice. And we will work with the library author to improve this in the future.
+By default, Hugo will use [Smartcrop](https://github.com/muesli/smartcrop), a library created by [muesli](https://github.com/muesli), when cropping images with `.Fill` or `.Crop`. You can set the anchor point manually, but in most cases the smart option will make a good choice. And we will work with the library author to improve this in the future.
 
-An example using the sunset image from above:
+Examples using the sunset image from above:
 
 {{< imgproc sunset Fill "200x200 smart" />}}
 
+{{< imgproc sunset Crop "200x200 smart" />}}
+
 ## Image Processing Performance Consideration
 
 Processed images are stored below `<project-dir>/resources` (can be set with `resourceDir` config setting). This folder is deliberately placed in the project, as it is recommended to check these into source control as part of the project. These images are not "Hugo fast" to generate, but once generated they can be reused.
diff --git a/content/en/hosting-and-deployment/deployment-with-nanobox.md b/content/en/hosting-and-deployment/deployment-with-nanobox.md
deleted file mode 100644 (file)
index 1ab77c4..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
----
-title: Host-Agnostic Deploys with Nanobox
-linktitle: Host-Agnostic Deploys with Nanobox
-description: Easily deploy Hugo to AWS, DigitalOcean, Google, Azure, and more...
-date: 2017-08-24
-publishdate: 2017-08-24
-lastmod: 2017-08-24
-categories: [hosting and deployment]
-keywords: [nanobox,deployment,hosting,aws,digitalocean,azure,google,linode]
-authors: [Steve Domino]
-menu:
-  docs:
-    parent: "hosting-and-deployment"
-    weight: 05
-weight: 05
-sections_weight: 05
-draft: false
-aliases: [/tutorials/deployment-with-nanobox/]
-toc: true
----
-
-![hugo with nanobox](/images/hosting-and-deployment/deployment-with-nanobox/hugo-with-nanobox.png)
-
-Nanobox provides an entire end-to-end workflow for developing and deploying applications. Using Nanobox to deploy also means you'll use it to develop your application.
-
-{{% note %}}
-If you're already using Nanobox and just need deployment instructions, you can skip to [Deploying Hugo with Nanobox](#deploying-hugo-with-nanobox)
-{{% /note %}}
-
-
-## What You'll Need
-
-With Nanobox you don't need to worry about having Go or Hugo installed. They'll be installed as part of the development environment created for you.
-
-To get started you'll just need the following three items:
-
-* [A Nanobox Account](https://nanobox.io) - Signup is free
-* [Nanobox Desktop](https://dashboard.nanobox.io/download) - The free desktop development tool
-* An account with a hosting provider such as:
-  - [AWS](https://docs.nanobox.io/providers/hosting-accounts/aws/)
-  - [Google](https://docs.nanobox.io/providers/hosting-accounts/gcp/)
-  - [Azure](https://docs.nanobox.io/providers/hosting-accounts/azure/)
-  - [DigitalOcean](https://docs.nanobox.io/providers/hosting-accounts/digitalocean/)
-  - [Linode](https://docs.nanobox.io/providers/hosting-accounts/linode/)
-  - [More...](https://docs.nanobox.io/providers/hosting-accounts/)
-  - [Roll Your Own](https://docs.nanobox.io/providers/create/)
-
-### Before You Begin
-
-There are a few things to get out of the way before diving into the guide. To deploy, you'll need to make sure you have connected a host account to your Nanobox account, and launched a new application.
-
-#### Connect a Host Account
-
-Nanobox lets you choose where to host your application (AWS, DigitalOcean, Google, Azure, etc.). In the [Hosting Accounts](https://dashboard.nanobox.io/provider_accounts) section of your Nanobox dashboard [link your Nanobox account with your host](https://docs.nanobox.io/providers/hosting-accounts/).
-
-#### Launch a New Application on Nanobox
-
-[Launching a new app on Nanobox](https://docs.nanobox.io/workflow/launch-app/) is very simple. Navigate to [Launch New App](https://dashboard.nanobox.io/apps/new) in the dashboard, and follow the steps there. You'll be asked to name your app, and to select a host and region.
-
-With those out of the way you're ready to get started!
-
-
-## Getting Started
-
-{{% note %}}
-If you already have a functioning Hugo app, you can skip to [Configure Hugo to run with Nanobox](#configure-hugo-to-run-with-nanobox)
-{{% /note %}}
-
-To get started, all you'll need is an empty project directory. Create a directory wherever you want your application to live and `cd` into it:
-
-`mkdir path/to/project && cd path/to/project`
-
-### Configure Hugo to run with Nanobox
-
-Nanobox uses a simple config file known as a [boxfile.yml](https://docs.nanobox.io/boxfile/) to describe your application's infrastructure. In the root of your project add the following `boxfile.yml`:
-
-{{< code file="boxfile.yml" >}}
-run.config:
-
-  # use the static engine
-  engine: static
-  engine.config:
-
-    # tell the engine where to serve static assets from
-    rel_dir: public
-
-  # enable file watching for live reload
-  fs_watch: true
-
-  # install hugo
-  extra_steps:
-    - bash ./install.sh
-
-deploy.config:
-
-  # generate site on deploy
-  extra_steps:
-    - hugo
-
-{{< /code >}}
-
-{{% note %}}
-If you already have a functioning Hugo app, after adding the boxfile, you can skip to [Deploying Hugo with Nanobox](#deploying-hugo-with-nanobox).
-{{% /note %}}
-
-### Installing Hugo
-
-Nanobox uses Docker to create instant, isolated, development environments. Because of this, you'll need to make sure that during development you have Hugo available.
-
-Do this by adding a custom install script at the root of your project that will install Hugo automatically for you:
-
-{{< code file="install.sh" >}}
-
-#!/bin/bash
-
-if [[ ! -f /data/bin/hugo ]]; then
-  cd /tmp
-  wget https://github.com/gohugoio/hugo/releases/download/v0.31.1/hugo_0.31.1_Linux-64bit.tar.gz
-  tar -xzf hugo_0.31.1_Linux-64bit.tar.gz
-  mv hugo /data/bin/hugo
-  cd -
-  rm -rf /tmp/*
-fi
-
-{{< /code >}}
-
-{{% note %}}
-If the install script fails during `nanobox run` you may need to make it executable with `chmod +x install.sh`
-{{% /note %}}
-{{% note %}}
-Make sure to check the version of Hugo you have installed and update the install script to match.
-{{% /note %}}
-
-### Generating a New Hugo App
-
-You'll generate your new application from inside the Nanobox VM (this is why you don't need to worry about having Go or Hugo installed).
-
-Run the following command to drop into a Nanobox console (inside the VM) where your codebase is mounted:
-
-```
-nanobox run
-```
-
-![nanobox run](/images/hosting-and-deployment/deployment-with-nanobox/nanobox-run.png)
-
-Once inside the console use the following steps to create a new Hugo application:
-
-```
-# cd into the /tmp dir to create an app
-cd /tmp
-
-# generate the hugo app
-hugo new site app
-
-# cd back into the /app dir
-cd -
-
-# copy the generated app into the project
-shopt -s dotglob
-cp -a /tmp/app/* .
-```
-
-### Install a theme
-
-`cd` into the `themes` directory and clone the `nanobox-hugo-theme` repo:
-
-```
-cd themes
-git clone https://github.com/sdomino/nanobox-hugo-theme
-```
-
-To use the theme *either* copy the entire `config.toml` that comes with the theme, or just add the theme to your existing `config.toml`
-
-```
-# copy the config.toml that comes with the theme
-cp ./themes/nanobox-hugo-theme/config.toml config.toml
-
-# or, add it to your existing config.toml
-theme = "nanobox-hugo-theme"
-```
-
-{{% note %}}
-It is not intended that you use the `nanobox-hugo-theme` as your actual theme. It's simply a theme to start with and should be replaced.
-{{% /note %}}
-
-### View Your App
-
-To view your application simply run the following command from a Nanobox console:
-
-```
-hugo server --bind="0.0.0.0" --baseUrl=$APP_IP
-```
-
-![hugo server](/images/hosting-and-deployment/deployment-with-nanobox/hugo-server.png)
-
-With that you should be able to visit your app at the given IP:1313 address
-
-{{% note %}}
-You can [add a custom DNS alias](https://docs.nanobox.io/cli/dns/#add) to make it easier to access your app. Run `nanobox dns add local hugo.dev`. After starting your server, visit your app at [hugo.dev:1313](http://hugo.dev:1313)
-{{% /note %}}
-
-### Develop, Develop, Develop
-
-{{% note %}}
-IMPORTANT: One issue we are aware of, and actively investigating, is livereload. Currently, livereload does not work when developing Hugo applications with Nanobox.
-{{% /note %}}
-
-With Hugo installed you're ready to go. Develop Hugo like you would normally (using all the generators, etc.). Once your app is ready to deploy, run `hugo` to generate your static assets and get ready to deploy!
-
-
-## Deploying Hugo with Nanobox
-
-{{% note %}}
-If you haven't already, make sure to [connect a hosting account](#connect-a-host-account) to your Nanobox account, and [launch a new application](#launch-a-new-application-on-nanobox) in the Dashboard.
-{{% /note %}}
-
-To deploy your application to Nanobox you simply need to [link your local codebase](https://docs.nanobox.io/workflow/deploy-code/#add-your-live-app-as-a-remote) to an application you've created on Nanobox. That is done with the following command:
-
-```
-nanobox remote add <your-app-name>
-```
-
-{{% note %}}
-You may be prompted to login using your ***Nanobox credentials*** at this time
-{{% /note %}}
-
-### Stage Your Application (optional)
-
-Nanobox gives you the ability to [simulate your production environment locally](https://docs.nanobox.io/workflow/deploy-code/#preview-locally). While staging is optional it's always recommended, so there's no reason not to!
-
-To stage your app simply run:
-
-```
-nanobox deploy dry-run
-```
-
-Now visit your application with the IP address provided.
-
-![nanobox deploy dry-run](/images/hosting-and-deployment/deployment-with-nanobox/nanobox-deploy-dry-run.png)
-
-### Deploy Your Application
-
-Once everything checks out and you're [ready to deploy](https://docs.nanobox.io/workflow/deploy-code/#deploy-to-production), simply run:
-
-```
-nanobox deploy
-```
-
-Within minutes you're Hugo app will be deployed to your host and humming along smoothly. That's it!
index 675a696d35724894dd1df332aee480b76b364c9d..ae30ce44a34e87a5ca85ff1aef5bdc660ee5b89d 100644 (file)
@@ -34,14 +34,16 @@ There are two types of GitHub Pages:
 
 Please refer to the [GitHub Pages documentation][ghorgs] to decide which type of site you would like to create as it will determine which of the below methods to use.
 
+## Branches for GitHub Actions
+
+The GitHub Actions used in these instructions pull source content from the `main` branch and then commit the generated content to the `gh-pages` branch. This applies regardless of what type of GitHub Pages you are using. This is a clean setup as your Hugo files are stored in one branch and your generated files are published into a separate branch.
+
 ## GitHub User or Organization Pages
 
 As mentioned in the [GitHub Pages documentation][ghorgs], you can host a user/organization page in addition to project pages. Here are the key differences in GitHub Pages websites for Users and Organizations:
 
-1. You must use a `<USERNAME>.github.io` to host your **generated** content
-2. Content from the `main` branch will be used to publish your GitHub Pages site
-
-This is a much simpler setup as your Hugo files and generated content are published into two different repositories.
+1. You must create a repository named `<USERNAME>.github.io` or `<ORGANIZATION>.github.io` to host your pages
+2. By default, content from the `main` branch is used to publish GitHub Pages - rather than the `gh-pages` branch which is the default for project sites. However, the GitHub Actions in these instructions publish to the `gh-pages` branch. Therefore, if you are publishing Github pages for a user or organization, you will need to change the publishing branch to `gh-pages`. See the instructions later in this document.
 
 ## Build Hugo With GitHub Action
 
index 7248f04fb3cf96db1146dfc981944add4d782efe..c66d93a6dfd57519dc19350e576a4a98e3054667 100644 (file)
@@ -23,6 +23,7 @@ proxy = "direct"
 noProxy = "none"
 private = "*.*"
 replacements = ""
+workspace = ""
 {{< /code-toggle >}}
 
 
@@ -41,6 +42,9 @@ noProxy
 private
 : Comma separated glob list matching paths that should be treated as private.
 
+workspace {{< new-in "0.83.0" >}}
+The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+.
+
 replacements {{< new-in "0.77.0" >}}
 : A comma separated (or a slice) list of module path to directory replacement mapping, e.g. `github.com/bep/myprettytheme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary locally development of a module, and then it makes sense to set it as an OS environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/myprettytheme -> ../.."`. Any relative path is relate to [themesDir](https://gohugo.io/getting-started/configuration/#all-configuration-settings), and absolute paths are allowed.
 
index babf9cdb86d1558ff2e490e9fe9431418809d0d6..83d64d1d3ebb655b55df4201e52122c72e68a619 100755 (executable)
@@ -18,6 +18,23 @@ toc: true
 aliases: [/assets/]
 ---
 
+## Find Resources in /assets
+
+This is about the global Resources mounted inside `/assets`. For the `.Page` scoped Resources, see [Page Resources](/content-management/page-resources/).
+
+Note that you can mount any directory into Hugo's virtual `assets` folder using the [Mount Configuration](/hugo-modules/configuration/#module-config-mounts).
+
+| Function  | Description |
+| ------------- | ------------- |
+| `resources.Get`  | Get locates the filename given in Hugo's assets filesystem and creates a `Resource` object that can be used for further transformations. See [Get Resource with resources.Get and resources.GetRemote](#get-resource-with-resourcesget-and-resourcesgetremote).  |
+| `resources.GetRemote`  | Same as `Get`, but it accepts remote URLs. See [Get Resource with resources.Get and resources.GetRemote](#get-resource-with-resourcesget-and-resourcesgetremote).|
+| `resources.GetMatch`  | `GetMatch` finds the first Resource matching the given pattern, or nil if none found. See Match for a more complete explanation about the rules used. |
+| `resources.Match`  | `Match` gets all resources matching the given base path prefix, e.g "*.png" will match all png files. The "*" does not match path delimiters (/), so if you organize your resources in sub-folders, you need to be explicit about it, e.g.: "images/*.png". To match any PNG image anywhere in the bundle you can do "\*\*.png", and to match all PNG images below the images folder, use "images/\*\*.jpg". The matching is case insensitive. Match matches by using the files name with path relative to the file system root with Unix style slashes (/) and no leading slash, e.g. "images/logo.png". See https://github.com/gobwas/glob for the full rules set.|
+
+
+See the [GoDoc Page](https://pkg.go.dev/github.com/gohugoio/hugo@v0.93.1/tpl/resources) for the `resources` package for an up to date overview of all template functions in this namespace.
+
+
 ## Get Resource with resources.Get and resources.GetRemote
 
 In order to process an asset with Hugo Pipes, it must be retrieved as a `Resource` using `resources.Get` or `resources.GetRemote`.
index 5053e3fb200fdbd75399f58113121336722694d2..cd268eaa6061d559704927030664406c9842d659 100644 (file)
@@ -80,7 +80,7 @@ Huge thanks to all who participated in this release. A special thanks to [@bep](
 ## Bugfixes
 - Fix data races in page sorting and page reversal. These operations are now also cached. [#1293](https://github.com/spf13/hugo/issues/1293)
 - `page.HasMenuCurrent()` and `node.HasMenuCurrent()` now work correctly in multi-level nested menus.
-- Support `Fish and Chips` style section titles. Previously, this would end up as  `Fish And Chips`. Now, the first character is made toupper, but the rest are preserved as-is. [#1176](https://github.com/spf13/hugo/issues/1176)
+- Support `Fish and Chips` style section titles. Previously, this would end up as  `Fish And Chips`. Now, the first character is made to upper, but the rest are preserved as-is. [#1176](https://github.com/spf13/hugo/issues/1176)
 - Hugo now removes superfluous p-tags around shortcodes. [#1148](https://github.com/spf13/hugo/issues/1148)
 
 ## Notices
index 75e944a6c3ed26ccc237bb2033da8b43289872b8..27e4d48f70446599f620760a310060412b44a627 100644 (file)
@@ -42,7 +42,7 @@ Worth mentioning is also the ongoing work that [@rdwatters](//github.com/rdwatte
 *   Hugo `0.20` is built with Go 1.8.1.
 *   Add `.Site.Params.mainSections` that defaults to the section with the most pages. Plan is to get themes to use this instead of the hardcoded `blog` in `where` clauses. [#3206](//github.com/gohugoio/hugo/issues/3206)
 *   File extension is now configurable. [#320](//github.com/gohugoio/hugo/issues/320)
-*   Impove `markdownify` template function performance. [#3292](//github.com/gohugoio/hugo/issues/3292)
+*   Improve `markdownify` template function performance. [#3292](//github.com/gohugoio/hugo/issues/3292)
 *   Add taxonomy terms’ pages to `.Data.Pages` [#2826](//github.com/gohugoio/hugo/issues/2826)
 *   Change `RSS` description from full `.Content` to `.Summary`.
 *   Ignore “.” dirs in `hugo --cleanDestinationDir` [#3202](//github.com/gohugoio/hugo/issues/3202)
index 8a9e8d5f52d1d8b4a0778efd367b2bfdcf2f87d3..fefb501f6475b2346be9b8b9ee49fbb319ab3b13 100644 (file)
@@ -74,7 +74,7 @@ Also, considerable work has been put into writing automated benchmark tests for
 
 ### Docs
 * Rewrite “Archetypes” article [@davidturnbull](https://github.com/davidturnbull) [#3543](https://github.com/gohugoio/hugo/pull/3543/) 
-* Remove Unmaintaned Frontends from Tools. [f41f7282](https://github.com/gohugoio/hugo/commit/f41f72822251c9a31031fd5b3dda585c57c8b028) [@onedrawingperday](https://github.com/onedrawingperday) 
+* Remove Unmaintained Frontends from Tools. [f41f7282](https://github.com/gohugoio/hugo/commit/f41f72822251c9a31031fd5b3dda585c57c8b028) [@onedrawingperday](https://github.com/onedrawingperday) 
 
 ## Fixes
 
index ef0df2427639f072b19eea95ebae6010e5ad5768..65c2f103674237867ed541e80bbc13a83547d512 100644 (file)
@@ -38,7 +38,7 @@ Hugo now has:
 ## Enhancements
 
 * Add `templates.Exists` template function. This can be used to check if a template, e.g. a partial, exists in the project or any of the themes in use. [0ba19c57](https://github.com/gohugoio/hugo/commit/0ba19c57f180c33b41c64335ea1d1c89335d34c0) [@bep](https://github.com/bep) [#5010](https://github.com/gohugoio/hugo/issues/5010)
-* Remove superflous loop [0afa2897](https://github.com/gohugoio/hugo/commit/0afa2897a0cf90f4348929ef432202efddc183a0) [@bep](https://github.com/bep) 
+* Remove superfluous loop [0afa2897](https://github.com/gohugoio/hugo/commit/0afa2897a0cf90f4348929ef432202efddc183a0) [@bep](https://github.com/bep) 
 * Update Chroma [b5d13ca1](https://github.com/gohugoio/hugo/commit/b5d13ca16bf106c1bc29c2a5295cd231d1bf13fd) [@bep](https://github.com/bep) [#5019](https://github.com/gohugoio/hugo/issues/5019)
 * Make resources fetched via `resources.Get` and similar language agnostic [6b02f5c0](https://github.com/gohugoio/hugo/commit/6b02f5c0f4e0ba1730aebc5a590a111548233bd5) [@bep](https://github.com/bep) [#5017](https://github.com/gohugoio/hugo/issues/5017)
 * Improve SCSS project vs themes import resolution [f219ac09](https://github.com/gohugoio/hugo/commit/f219ac09f6b7e26d84599401512233d77c1bdb4c) [@bep](https://github.com/bep) [#5008](https://github.com/gohugoio/hugo/issues/5008)
index 28a33c697e1036297ddb79ac3b85fd9e9f85ff70..b38edc86aba65e9f2434b373de08dd3d98a99e8a 100644 (file)
           "bibtex"
         ]
       },
+      {
+        "Name": "Bicep",
+        "Aliases": [
+          "bicep"
+        ]
+      },
       {
         "Name": "BlitzBasic",
         "Aliases": [
           "onesenterprise"
         ]
       },
+      {
+        "Name": "OpenEdge ABL",
+        "Aliases": [
+          "abl",
+          "cls",
+          "i",
+          "openedge",
+          "openedgeabl",
+          "p",
+          "progress",
+          "w"
+        ]
+      },
       {
         "Name": "OpenSCAD",
         "Aliases": [
           "txt"
         ]
       },
+      {
+        "Name": "Plutus Core",
+        "Aliases": [
+          "plc",
+          "plutus-core"
+        ]
+      },
       {
         "Name": "Pony",
         "Aliases": [
       {
         "Name": "XML",
         "Aliases": [
+          "csproj",
+          "fsproj",
           "rss",
           "svg",
+          "vcxproj",
           "wsdl",
           "wsf",
           "xml",
           "yang"
         ]
       },
+      {
+        "Name": "Zed",
+        "Aliases": [
+          "zed"
+        ]
+      },
       {
         "Name": "Zig",
         "Aliases": [
         "style": "monokai",
         "codeFences": true,
         "noClasses": true,
+        "noHl": false,
         "lineNos": false,
         "lineNumbersInTable": true,
         "anchorLineNos": false,
         },
         "js": {
           "precision": 0,
-          "keepVarNames": false
+          "keepVarNames": false,
+          "noNullishOperator": false
         },
         "json": {
           "precision": 0,
         "type": "application/javascript",
         "string": "application/javascript",
         "suffixes": [
-          "js"
+          "js",
+          "jsm",
+          "mjs"
         ]
       },
       {
           ],
           "Examples": [
             [
-              "{{ if eq .Section \"blog\" }}current{{ end }}",
-              "current"
+              "{{ if eq .Section \"blog\" }}current-section{{ end }}",
+              "current-section"
             ]
           ]
         },
           ],
           "Examples": [
             [
-              "{{ if ge .Hugo.Version \"0.36\" }}Reasonable new Hugo version!{{ end }}",
+              "{{ if ge hugo.Version \"0.80\" }}Reasonable new Hugo version!{{ end }}",
               "Reasonable new Hugo version!"
             ]
           ]
           ]
         }
       },
+      "diagrams": {
+        "Goat": {
+          "Description": "",
+          "Args": null,
+          "Aliases": null,
+          "Examples": null
+        }
+      },
       "encoding": {
         "Base64Decode": {
           "Description": "Base64Decode returns the base64 decoding of the given content.",
             ]
           ]
         },
+        "Counter": {
+          "Description": "",
+          "Args": null,
+          "Aliases": null,
+          "Examples": null
+        },
         "Div": {
           "Description": "Div divides two numbers.",
           "Args": [
       },
       "partials": {
         "Include": {
-          "Description": "Include executes the named partial.\nIf the partial contains a return statement, that value will be returned.\nElse, the rendered output will be returned:\nA string if the partial is a text/template, or template.HTML when html/template.",
+          "Description": "Include executes the named partial.\nIf the partial contains a return statement, that value will be returned.\nElse, the rendered output will be returned:\nA string if the partial is a text/template, or template.HTML when html/template.\nNote that ctx is provided by Hugo, not the end user.",
           "Args": [
+            "ctx",
             "name",
             "contextList"
           ],
           ]
         },
         "IncludeCached": {
-          "Description": "IncludeCached executes and caches partial templates.  The cache is created with name+variants as the key.",
+          "Description": "IncludeCached executes and caches partial templates.  The cache is created with name+variants as the key.\nNote that ctx is provided by Hugo, not the end user.",
           "Args": [
+            "ctx",
             "name",
             "context",
             "variants"
           "Aliases": null,
           "Examples": null
         },
+        "Home": {
+          "Description": "",
+          "Args": null,
+          "Aliases": null,
+          "Examples": null
+        },
         "Hugo": {
           "Description": "",
           "Args": null,
         }
       },
       "transform": {
+        "CanHighlight": {
+          "Description": "",
+          "Args": null,
+          "Aliases": null,
+          "Examples": null
+        },
         "Emojify": {
           "Description": "Emojify returns a copy of s with all emoji codes replaced with actual emojis.\n\nSee http://www.emoji-cheat-sheet.com/",
           "Args": [
           ],
           "Examples": []
         },
+        "HighlightCodeBlock": {
+          "Description": "",
+          "Args": null,
+          "Aliases": null,
+          "Examples": null
+        },
         "Markdownify": {
           "Description": "Markdownify renders a given input from Markdown to HTML.",
           "Args": [
diff --git a/go.mod b/go.mod
index ee6aab404c187888b0a0acc7c872aba11bd34776..75ec6290fff5cae5e4f61954dace6cfab331c36f 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -2,5 +2,4 @@ module github.com/gohugoio/hugoDocs
 
 go 1.16
 
-require github.com/gohugoio/gohugoioTheme v0.0.0-20211211134334-0fe25799bb58 // indirect
-
+require github.com/gohugoio/gohugoioTheme v0.0.0-20220228085601-7cfbda06d135 // indirect
diff --git a/go.sum b/go.sum
index 2349f8ea68cbffb05242b2c7e56d4c17b0890f7a..dad4ba67c23a8ef442006d1272cb22bc47a30ccd 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -31,3 +31,5 @@ github.com/gohugoio/gohugoioTheme v0.0.0-20210409071416-c88da48134b7 h1:uRCgPsla
 github.com/gohugoio/gohugoioTheme v0.0.0-20210409071416-c88da48134b7/go.mod h1:kpw3SS48xZvLQGEXKu8u5XHgXkPvL8DX3oGa07+z8Bs=
 github.com/gohugoio/gohugoioTheme v0.0.0-20211211125852-b85e21c1f3d6 h1:lAgdWrn8VEg0PrNCPX4DflCg2msDKpSYV6E8RTNV3N0=
 github.com/gohugoio/gohugoioTheme v0.0.0-20211211125852-b85e21c1f3d6/go.mod h1:kpw3SS48xZvLQGEXKu8u5XHgXkPvL8DX3oGa07+z8Bs=
+github.com/gohugoio/gohugoioTheme v0.0.0-20220228085601-7cfbda06d135 h1:6hVzfE9YhSsZP5t6jWjvVp7MoPm7Y5fEhH/ls4ahhKk=
+github.com/gohugoio/gohugoioTheme v0.0.0-20220228085601-7cfbda06d135/go.mod h1:kpw3SS48xZvLQGEXKu8u5XHgXkPvL8DX3oGa07+z8Bs=
diff --git a/layouts/_default/_markup/render-codeblock-mermaid.html b/layouts/_default/_markup/render-codeblock-mermaid.html
new file mode 100644 (file)
index 0000000..5964155
--- /dev/null
@@ -0,0 +1,4 @@
+<div class="mermaid">
+  {{- .Inner | safeHTML }}
+</div>
+{{ .Page.Store.Set "hasMermaid" true }}
diff --git a/layouts/partials/hooks/before-body-end.html b/layouts/partials/hooks/before-body-end.html
new file mode 100644 (file)
index 0000000..fb7ae20
--- /dev/null
@@ -0,0 +1,6 @@
+{{ if .Page.Store.Get "hasMermaid" }}
+  <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
+  <script>
+    mermaid.initialize({ startOnLoad: true });
+  </script>
+{{ end }}
index 5e02317c6b64b7ef8bbd9e1c3038e21e882c9765..181e97f1dea77c9b14048e44f7a1604ca411e208 100644 (file)
@@ -7,8 +7,10 @@
 {{ .Scratch.Set "image" ($original.Resize $options) }}
 {{ else if eq $command "Fill"}}
 {{ .Scratch.Set "image" ($original.Fill $options) }}
+{{ else if eq $command "Crop"}}
+{{ .Scratch.Set "image" ($original.Crop $options) }}
 {{ else }}
-{{ errorf "Invalid image processing command: Must be one of Fit, Fill or Resize."}}
+{{ errorf "Invalid image processing command: Must be one of Crop, Fit, Fill or Resize."}}
 {{ end }}
 {{ $image := .Scratch.Get "image" }}
 <figure style="padding: 0.25rem; margin: 2rem 0; background-color: #cccc">
index ab0abb27309f3bba3fcf17131d776f889826e279..e81fda3c524e70fe623fca239a730c44c798f533 100644 (file)
@@ -4,5 +4,5 @@
 {{ end }}
 {{ $version = $version | strings.TrimPrefix "v" }}
 <button class="bg-white hover:bg-gray-100 text-gray-800 font-semibold py-2 mr2 ml2 px-4 border border-gray-400 rounded shadow">
-    <a href="{{ printf "https://gohugo.io/news/%s-relnotes/" $version }}" target="_blank">New in v{{$version}}</a>
-</button>
\ No newline at end of file
+    <a href="{{ printf "https://github.com/gohugoio/hugo/releases/tag/v%s" $version }}" target="_blank">New in v{{$version}}</a>
+</button>
index d8056f8f244cdecb5aa26c5415f951d353ec6c15..f7f61503032e5e9c785c563a166857d5144b5502 100644 (file)
@@ -3,7 +3,7 @@ publish = "public"
 command = "hugo --gc --minify"
 
 [context.production.environment]
-HUGO_VERSION = "0.92.2"
+HUGO_VERSION = "0.93.3"
 HUGO_ENV = "production"
 HUGO_ENABLEGITINFO = "true"
 
@@ -11,20 +11,20 @@ HUGO_ENABLEGITINFO = "true"
 command = "hugo --gc --minify --enableGitInfo"
 
 [context.split1.environment]
-HUGO_VERSION = "0.92.2"
+HUGO_VERSION = "0.93.3"
 HUGO_ENV = "production"
 
 [context.deploy-preview]
 command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
 
 [context.deploy-preview.environment]
-HUGO_VERSION = "0.92.2"
+HUGO_VERSION = "0.93.3"
 
 [context.branch-deploy]
 command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
 
 [context.branch-deploy.environment]
-HUGO_VERSION = "0.92.2"
+HUGO_VERSION = "0.93.3"
 
 [context.next.environment]
 HUGO_ENABLEGITINFO = "true"
diff --git a/static/img/examples/trees.svg b/static/img/examples/trees.svg
new file mode 100644 (file)
index 0000000..0aaccfc
--- /dev/null
@@ -0,0 +1,104 @@
+<svg class='diagram' xmlns='http://www.w3.org/2000/svg' version='1.1' height='153' width='712'>
+ <defs>
+    <style>
+      svg {
+       color: black;
+      }
+      @media (prefers-color-scheme:dark) {
+        svg {
+           color: white;
+        }
+      }
+    </style>
+  </defs>
+<g transform='translate(8,16)'>
+<path d='M 472,16 L 496,16' fill='none' stroke='currentColor'></path>
+<path d='M 608,16 L 616,16' fill='none' stroke='currentColor'></path>
+<path d='M 440,32 L 472,32' fill='none' stroke='currentColor'></path>
+<path d='M 584,32 L 592,32' fill='none' stroke='currentColor'></path>
+<path d='M 176,48 L 208,48' fill='none' stroke='currentColor'></path>
+<path d='M 208,48 L 240,48' fill='none' stroke='currentColor'></path>
+<path d='M 328,48 L 344,48' fill='none' stroke='currentColor'></path>
+<path d='M 344,48 L 360,48' fill='none' stroke='currentColor'></path>
+<path d='M 472,48 L 496,48' fill='none' stroke='currentColor'></path>
+<path d='M 608,48 L 616,48' fill='none' stroke='currentColor'></path>
+<path d='M 416,64 L 440,64' fill='none' stroke='currentColor'></path>
+<path d='M 544,64 L 568,64' fill='none' stroke='currentColor'></path>
+<path d='M 160,80 L 176,80' fill='none' stroke='currentColor'></path>
+<path d='M 176,80 L 192,80' fill='none' stroke='currentColor'></path>
+<path d='M 224,80 L 240,80' fill='none' stroke='currentColor'></path>
+<path d='M 240,80 L 256,80' fill='none' stroke='currentColor'></path>
+<path d='M 472,80 L 496,80' fill='none' stroke='currentColor'></path>
+<path d='M 608,80 L 616,80' fill='none' stroke='currentColor'></path>
+<path d='M 440,96 L 472,96' fill='none' stroke='currentColor'></path>
+<path d='M 584,96 L 592,96' fill='none' stroke='currentColor'></path>
+<path d='M 472,112 L 496,112' fill='none' stroke='currentColor'></path>
+<path d='M 608,112 L 616,112' fill='none' stroke='currentColor'></path>
+<path d='M 160,80 L 160,96' fill='none' stroke='currentColor'></path>
+<path d='M 176,48 L 176,80' fill='none' stroke='currentColor'></path>
+<path d='M 192,80 L 192,96' fill='none' stroke='currentColor'></path>
+<path d='M 208,16 L 208,48' fill='none' stroke='currentColor'></path>
+<path d='M 224,80 L 224,96' fill='none' stroke='currentColor'></path>
+<path d='M 240,48 L 240,80' fill='none' stroke='currentColor'></path>
+<path d='M 256,80 L 256,96' fill='none' stroke='currentColor'></path>
+<path d='M 312,64 L 312,80' fill='none' stroke='currentColor'></path>
+<path d='M 344,16 L 344,48' fill='none' stroke='currentColor'></path>
+<path d='M 376,64 L 376,80' fill='none' stroke='currentColor'></path>
+<path d='M 440,32 L 440,64' fill='none' stroke='currentColor'></path>
+<path d='M 440,64 L 440,96' fill='none' stroke='currentColor'></path>
+<path d='M 472,16 L 472,32' fill='none' stroke='currentColor'></path>
+<path d='M 472,32 L 472,48' fill='none' stroke='currentColor'></path>
+<path d='M 472,80 L 472,96' fill='none' stroke='currentColor'></path>
+<path d='M 472,96 L 472,112' fill='none' stroke='currentColor'></path>
+<path d='M 568,48 L 568,64' fill='none' stroke='currentColor'></path>
+<path d='M 568,64 L 568,80' fill='none' stroke='currentColor'></path>
+<path d='M 40,96 L 56,64' fill='none' stroke='currentColor'></path>
+<path d='M 56,64 L 80,16' fill='none' stroke='currentColor'></path>
+<path d='M 88,96 L 104,64' fill='none' stroke='currentColor'></path>
+<path d='M 656,64 L 672,32' fill='none' stroke='currentColor'></path>
+<path d='M 672,32 L 680,16' fill='none' stroke='currentColor'></path>
+<path d='M 672,96 L 680,80' fill='none' stroke='currentColor'></path>
+<path d='M 56,64 L 72,96' fill='none' stroke='currentColor'></path>
+<path d='M 80,16 L 104,64' fill='none' stroke='currentColor'></path>
+<path d='M 104,64 L 120,96' fill='none' stroke='currentColor'></path>
+<path d='M 656,64 L 672,96' fill='none' stroke='currentColor'></path>
+<path d='M 672,96 L 680,112' fill='none' stroke='currentColor'></path>
+<path d='M 672,32 L 680,48' fill='none' stroke='currentColor'></path>
+<path d='M 608,16 A 16,16 0 0,0 592,32' fill='none' stroke='currentColor'></path>
+<path d='M 584,32 A 16,16 0 0,0 568,48' fill='none' stroke='currentColor'></path>
+<path d='M 328,48 A 16,16 0 0,0 312,64' fill='none' stroke='currentColor'></path>
+<path d='M 360,48 A 16,16 0 0,1 376,64' fill='none' stroke='currentColor'></path>
+<path d='M 592,32 A 16,16 0 0,0 608,48' fill='none' stroke='currentColor'></path>
+<path d='M 312,80 A 16,16 0 0,0 296,96' fill='none' stroke='currentColor'></path>
+<path d='M 312,80 A 16,16 0 0,1 328,96' fill='none' stroke='currentColor'></path>
+<path d='M 376,80 A 16,16 0 0,0 360,96' fill='none' stroke='currentColor'></path>
+<path d='M 376,80 A 16,16 0 0,1 392,96' fill='none' stroke='currentColor'></path>
+<path d='M 608,80 A 16,16 0 0,0 592,96' fill='none' stroke='currentColor'></path>
+<path d='M 568,80 A 16,16 0 0,0 584,96' fill='none' stroke='currentColor'></path>
+<path d='M 592,96 A 16,16 0 0,0 608,112' fill='none' stroke='currentColor'></path>
+<text text-anchor='middle' x='40' y='116' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='72' y='116' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='88' y='116' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='120' y='116' fill='currentColor' style='font-size:1em'>4</text>
+<text text-anchor='middle' x='160' y='116' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='192' y='116' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='224' y='116' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='256' y='116' fill='currentColor' style='font-size:1em'>4</text>
+<text text-anchor='middle' x='296' y='116' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='328' y='116' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='360' y='116' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='392' y='116' fill='currentColor' style='font-size:1em'>4</text>
+<text text-anchor='middle' x='512' y='20' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='512' y='52' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='512' y='84' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='512' y='116' fill='currentColor' style='font-size:1em'>4</text>
+<text text-anchor='middle' x='632' y='20' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='632' y='52' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='632' y='84' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='632' y='116' fill='currentColor' style='font-size:1em'>4</text>
+<text text-anchor='middle' x='696' y='20' fill='currentColor' style='font-size:1em'>1</text>
+<text text-anchor='middle' x='696' y='52' fill='currentColor' style='font-size:1em'>2</text>
+<text text-anchor='middle' x='696' y='84' fill='currentColor' style='font-size:1em'>3</text>
+<text text-anchor='middle' x='696' y='116' fill='currentColor' style='font-size:1em'>4</text>
+</g>
+</svg>