mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
Add all config to docshelper.json
Also consolidate so the mediaTypes and outputFormats are listed once only. Fixes #11328
This commit is contained in:
parent
d4a6c16c17
commit
851bf3515e
15 changed files with 1023 additions and 770 deletions
|
@ -30,6 +30,8 @@ import (
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
"github.com/gohugoio/hugo/docshelper"
|
||||||
"github.com/gohugoio/hugo/helpers"
|
"github.com/gohugoio/hugo/helpers"
|
||||||
"github.com/gohugoio/hugo/hugofs"
|
"github.com/gohugoio/hugo/hugofs"
|
||||||
|
"github.com/gohugoio/hugo/hugolib"
|
||||||
|
"github.com/gohugoio/hugo/parser"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
"github.com/spf13/cobra/doc"
|
"github.com/spf13/cobra/doc"
|
||||||
)
|
)
|
||||||
|
@ -197,6 +199,14 @@ url: %s
|
||||||
enc := json.NewEncoder(f)
|
enc := json.NewEncoder(f)
|
||||||
enc.SetIndent("", " ")
|
enc.SetIndent("", " ")
|
||||||
|
|
||||||
|
configProvider := func() docshelper.DocProvider {
|
||||||
|
conf := hugolib.DefaultConfig()
|
||||||
|
conf.CacheDir = "" // The default value does not make sense in the docs.
|
||||||
|
defaultConfig := parser.LowerCaseCamelJSONMarshaller{Value: conf}
|
||||||
|
return docshelper.DocProvider{"config": defaultConfig}
|
||||||
|
}
|
||||||
|
|
||||||
|
docshelper.AddDocProviderFunc(configProvider)
|
||||||
if err := enc.Encode(docshelper.GetDocProvider()); err != nil {
|
if err := enc.Encode(docshelper.GetDocProvider()); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,6 +53,7 @@ type decodeWeight struct {
|
||||||
decode func(decodeWeight, decodeConfig) error
|
decode func(decodeWeight, decodeConfig) error
|
||||||
getCompiler func(c *Config) configCompiler
|
getCompiler func(c *Config) configCompiler
|
||||||
weight int
|
weight int
|
||||||
|
internalOrDeprecated bool // Hide it from the docs.
|
||||||
}
|
}
|
||||||
|
|
||||||
var allDecoderSetups = map[string]decodeWeight{
|
var allDecoderSetups = map[string]decodeWeight{
|
||||||
|
@ -340,6 +341,7 @@ var allDecoderSetups = map[string]decodeWeight{
|
||||||
p.c.Author = maps.CleanConfigStringMap(p.p.GetStringMap(d.key))
|
p.c.Author = maps.CleanConfigStringMap(p.p.GetStringMap(d.key))
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
internalOrDeprecated: true,
|
||||||
},
|
},
|
||||||
"social": {
|
"social": {
|
||||||
key: "social",
|
key: "social",
|
||||||
|
@ -347,6 +349,7 @@ var allDecoderSetups = map[string]decodeWeight{
|
||||||
p.c.Social = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key))
|
p.c.Social = maps.CleanConfigStringMapString(p.p.GetStringMapString(d.key))
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
internalOrDeprecated: true,
|
||||||
},
|
},
|
||||||
"uglyurls": {
|
"uglyurls": {
|
||||||
key: "uglyurls",
|
key: "uglyurls",
|
||||||
|
@ -362,12 +365,14 @@ var allDecoderSetups = map[string]decodeWeight{
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
internalOrDeprecated: true,
|
||||||
},
|
},
|
||||||
"internal": {
|
"internal": {
|
||||||
key: "internal",
|
key: "internal",
|
||||||
decode: func(d decodeWeight, p decodeConfig) error {
|
decode: func(d decodeWeight, p decodeConfig) error {
|
||||||
return mapstructure.WeakDecode(p.p.GetStringMap(d.key), &p.c.Internal)
|
return mapstructure.WeakDecode(p.p.GetStringMap(d.key), &p.c.Internal)
|
||||||
},
|
},
|
||||||
|
internalOrDeprecated: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2021 The Hugo Authors. All rights reserved.
|
// Copyright 2023 The Hugo Authors. All rights reserved.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
@ -11,10 +11,11 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package config
|
package allconfig
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
|
"github.com/gohugoio/hugo/config"
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
"github.com/gohugoio/hugo/docshelper"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -22,8 +23,11 @@ import (
|
||||||
func init() {
|
func init() {
|
||||||
docsProvider := func() docshelper.DocProvider {
|
docsProvider := func() docshelper.DocProvider {
|
||||||
|
|
||||||
cfg := New()
|
cfg := config.New()
|
||||||
for _, configRoot := range ConfigRootKeys {
|
for configRoot, v := range allDecoderSetups {
|
||||||
|
if v.internalOrDeprecated {
|
||||||
|
continue
|
||||||
|
}
|
||||||
cfg.Set(configRoot, make(maps.Params))
|
cfg.Set(configRoot, make(maps.Params))
|
||||||
}
|
}
|
||||||
lang := maps.Params{
|
lang := maps.Params{
|
||||||
|
@ -38,7 +42,7 @@ func init() {
|
||||||
configHelpers := map[string]any{
|
configHelpers := map[string]any{
|
||||||
"mergeStrategy": cfg.Get(""),
|
"mergeStrategy": cfg.Get(""),
|
||||||
}
|
}
|
||||||
return docshelper.DocProvider{"config": configHelpers}
|
return docshelper.DocProvider{"config_helpers": configHelpers}
|
||||||
}
|
}
|
||||||
|
|
||||||
docshelper.AddDocProviderFunc(docsProvider)
|
docshelper.AddDocProviderFunc(docsProvider)
|
|
@ -1,26 +0,0 @@
|
||||||
// Copyright 2021 The Hugo Authors. All rights reserved.
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
|
|
||||||
package security
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
docsProvider := func() docshelper.DocProvider {
|
|
||||||
|
|
||||||
return docshelper.DocProvider{"config": DefaultConfig.ToSecurityMap()}
|
|
||||||
}
|
|
||||||
docshelper.AddDocProviderFunc(docsProvider)
|
|
||||||
}
|
|
|
@ -112,7 +112,7 @@ deep
|
||||||
|
|
||||||
Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set.
|
Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set.
|
||||||
|
|
||||||
{{< code-toggle config="mergeStrategy" skipHeader=true />}}
|
{{< code-toggle file="hugo" dataKey="config_helpers.mergeStrategy" skipHeader=true />}}
|
||||||
|
|
||||||
## All configuration settings
|
## All configuration settings
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ A [media type] (also known as _MIME type_ and _content type_) is a two-part iden
|
||||||
|
|
||||||
This is the full set of built-in media types in Hugo:
|
This is the full set of built-in media types in Hugo:
|
||||||
|
|
||||||
{{< datatable "media" "types" "type" "suffixes" >}}
|
{{< datatable "config" "mediaTypes" "_key" "suffixes" >}}
|
||||||
|
|
||||||
**Note:**
|
**Note:**
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ Given a media type and some additional configuration, you get an **Output Format
|
||||||
|
|
||||||
This is the full set of Hugo's built-in output formats:
|
This is the full set of Hugo's built-in output formats:
|
||||||
|
|
||||||
{{< datatable "output" "formats" "name" "mediaType" "path" "baseName" "rel" "protocol" "isPlainText" "isHTML" "noUgly" "permalinkable" >}}
|
{{< datatable "config" "outputFormats" "name" "mediaType" "path" "baseName" "rel" "protocol" "isPlainText" "isHTML" "noUgly" "permalinkable" >}}
|
||||||
|
|
||||||
- A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined **as long as they resolve to a unique path on the file system**. In the above table, the best example of this is `AMP` vs. `HTML`. `AMP` has the value `amp` for `Path` so it doesn't overwrite the `HTML` version; e.g. we can now have both `/index.html` and `/amp/index.html`.
|
- A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined **as long as they resolve to a unique path on the file system**. In the above table, the best example of this is `AMP` vs. `HTML`. `AMP` has the value `amp` for `Path` so it doesn't overwrite the `HTML` version; e.g. we can now have both `/index.html` and `/amp/index.html`.
|
||||||
- The `MediaType` must match the `Type` of an already defined media type.
|
- The `MediaType` must match the `Type` of an already defined media type.
|
||||||
|
|
1421
docs/data/docs.json
1421
docs/data/docs.json
File diff suppressed because it is too large
Load diff
|
@ -1,14 +1,19 @@
|
||||||
{{ define "main" }}
|
{{ define "main" }}
|
||||||
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-ns">
|
<div class="w-100 ph4 pb5 pb6-ns pt1 mt4 pt3-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-2 w-100 w-20-l ph5-m ph0-l mb4 sticky">
|
||||||
<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">
|
<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">
|
||||||
<p class="b">What's on this Page</p>
|
<p class="b">What's on this Page</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#last-updated">Last Updated</a></li>
|
<li><a href="#last-updated">Last Updated</a></li>
|
||||||
<li><a href="#least-recently-updated">Least Recently Updated</a></li>
|
<li>
|
||||||
|
<a href="#least-recently-updated">Least Recently Updated</a>
|
||||||
|
</li>
|
||||||
<li><a href="#todos">Pages marked with TODO</a></li>
|
<li><a href="#todos">Pages marked with TODO</a></li>
|
||||||
<li><a href="#dependencies">Project dependencies (Hugo Modules)</a></li>
|
<li>
|
||||||
|
<a href="#dependencies">Project dependencies (Hugo Modules)</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,6 +36,7 @@
|
||||||
<h2 id="todos">Pages marked with TODO</h2>
|
<h2 id="todos">Pages marked with TODO</h2>
|
||||||
{{ partial "maintenance-pages-table.html" (.Scratch.Get "todos") }}
|
{{ partial "maintenance-pages-table.html" (.Scratch.Get "todos") }}
|
||||||
|
|
||||||
|
|
||||||
<h2 id="dependencies">Dependencies</h2>
|
<h2 id="dependencies">Dependencies</h2>
|
||||||
<table class="collapse ba br2 b--black-10 pv2 ph3">
|
<table class="collapse ba br2 b--black-10 pv2 ph3">
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -47,22 +53,26 @@
|
||||||
{{ range $index, $element := hugo.Deps }}
|
{{ range $index, $element := hugo.Deps }}
|
||||||
<tr class="striped--light-gray">
|
<tr class="striped--light-gray">
|
||||||
<th class="pv2 ph3">{{ add $index 1 }}</th>
|
<th class="pv2 ph3">{{ add $index 1 }}</th>
|
||||||
<td class="pv2 ph3">{{ with $element.Owner }}{{.Path }}{{ end }}</td>
|
<td class="pv2 ph3">
|
||||||
|
{{ with $element.Owner }}{{ .Path }}{{ end }}
|
||||||
|
</td>
|
||||||
<td class="pv2 ph3">
|
<td class="pv2 ph3">
|
||||||
{{ $element.Path }}
|
{{ $element.Path }}
|
||||||
{{ with $element.Replace}}
|
{{ with $element.Replace }}
|
||||||
=> {{ .Path }}
|
=>
|
||||||
|
{{ .Path }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</td>
|
</td>
|
||||||
<td class="pv2 ph3">{{ $element.Version }}</td>
|
<td class="pv2 ph3">{{ $element.Version }}</td>
|
||||||
<td class="pv2 ph3">{{ with $element.Time }}{{ . }}{{ end }}</td>
|
<td class="pv2 ph3">
|
||||||
|
{{ with $element.Time }}{{ . }}{{ end }}
|
||||||
|
</td>
|
||||||
<td class="pv2 ph3">{{ $element.Vendor }}</td>
|
<td class="pv2 ph3">{{ $element.Vendor }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{{ end }}
|
{{ end }}
|
|
@ -1,17 +1,18 @@
|
||||||
{{- /*
|
{{- /*
|
||||||
Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
|
|
||||||
@param {string} [config] The section of site.Data.docs.config to render.
|
@param {string} [config] The section of site.Data.docs.config to render.
|
||||||
@param {bool} [copy=true] If true, display a copy to clipboard button.
|
@param {bool} [copy=true] If true, display a copy to clipboard button.
|
||||||
@param {string} [file] The file name to display above the rendered code.
|
@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} [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.
|
@param {bool} [skipHeader=false] If false, omit top level key(s) when rendering a section of site.Data.docs.config.
|
||||||
|
|
||||||
@returns {template.HTML}
|
@returns {template.HTML}
|
||||||
*/}}
|
*/}}
|
||||||
|
|
||||||
{{- /* Initialize. */}}
|
{{- /* Initialize. */}}
|
||||||
{{- $config := "" }}
|
{{- $config := "" }}
|
||||||
|
{{- $dataKey := "" }}
|
||||||
{{- $copy := true }}
|
{{- $copy := true }}
|
||||||
{{- $file := "" }}
|
{{- $file := "" }}
|
||||||
{{- $fm := false }}
|
{{- $fm := false }}
|
||||||
|
@ -19,20 +20,21 @@ Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
|
|
||||||
{{- /* Get parameters. */}}
|
{{- /* Get parameters. */}}
|
||||||
{{- $config = .Get "config" }}
|
{{- $config = .Get "config" }}
|
||||||
|
{{- $dataKey = .Get "dataKey" }}
|
||||||
{{- $file = .Get "file" }}
|
{{- $file = .Get "file" }}
|
||||||
{{- if in (slice "false" false 0) (.Get "copy") }}
|
{{- if in (slice "false" false 0) (.Get "copy") }}
|
||||||
{{- $copy = false }}
|
{{- $copy = false }}
|
||||||
{{- else if in (slice "true" true 1) (.Get "copy")}}
|
{{- else if in (slice "true" true 1) (.Get "copy") }}
|
||||||
{{- $copy = true }}
|
{{- $copy = true }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if in (slice "false" false 0) (.Get "fm") }}
|
{{- if in (slice "false" false 0) (.Get "fm") }}
|
||||||
{{- $fm = false }}
|
{{- $fm = false }}
|
||||||
{{- else if in (slice "true" true 1) (.Get "fm")}}
|
{{- else if in (slice "true" true 1) (.Get "fm") }}
|
||||||
{{- $fm = true }}
|
{{- $fm = true }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if in (slice "false" false 0) (.Get "skipHeader") }}
|
{{- if in (slice "false" false 0) (.Get "skipHeader") }}
|
||||||
{{- $skipHeader = false }}
|
{{- $skipHeader = false }}
|
||||||
{{- else if in (slice "true" true 1) (.Get "skipHeader")}}
|
{{- else if in (slice "true" true 1) (.Get "skipHeader") }}
|
||||||
{{- $skipHeader = true }}
|
{{- $skipHeader = true }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
@ -43,14 +45,18 @@ Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
|
|
||||||
{{- /* Render. */}}
|
{{- /* Render. */}}
|
||||||
{{- $code := "" }}
|
{{- $code := "" }}
|
||||||
{{- with $config }}
|
{{- if $config }}
|
||||||
{{- $file = $file | default "hugo" }}
|
{{- $file = $file | default "hugo" }}
|
||||||
{{- $sections := (split . ".") }}
|
{{- $sections := (split $config ".") }}
|
||||||
{{- $configSection := index $.Site.Data.docs.config $sections }}
|
{{- $configSection := index $.Site.Data.docs.config $sections }}
|
||||||
{{- $code = dict $sections $configSection }}
|
{{- $code = dict $sections $configSection }}
|
||||||
{{- if $skipHeader }}
|
{{- if $skipHeader }}
|
||||||
{{- $code = $configSection }}
|
{{- $code = $configSection }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- else if $dataKey }}
|
||||||
|
{{- $file = $file | default $dataKey }}
|
||||||
|
{{- $sections := (split $dataKey ".") }}
|
||||||
|
{{- $code = index $.Site.Data.docs $sections }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- $code = $.Inner }}
|
{{- $code = $.Inner }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
@ -62,7 +68,9 @@ Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
</div>
|
</div>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range $langs }}
|
{{- range $langs }}
|
||||||
<button data-toggle-tab="{{ . }}" class="tab-button {{ cond (eq . "yaml") "active" "" }} ba san-serif f6 dib lh-solid ph2 pv2">
|
<button
|
||||||
|
data-toggle-tab="{{ . }}"
|
||||||
|
class="tab-button {{ cond (eq . "yaml") "active" "" }} ba san-serif f6 dib lh-solid ph2 pv2">
|
||||||
{{ . }}
|
{{ . }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
@ -70,7 +78,9 @@ Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-content">
|
<div class="tab-content">
|
||||||
{{- range $langs }}
|
{{- range $langs }}
|
||||||
<div data-pane="{{ . }}" class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" "" }}">
|
<div
|
||||||
|
data-pane="{{ . }}"
|
||||||
|
class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" "" }}">
|
||||||
{{- $hCode := $code | transform.Remarshal . }}
|
{{- $hCode := $code | transform.Remarshal . }}
|
||||||
{{- if and $fm (in (slice "toml" "yaml") .) }}
|
{{- if and $fm (in (slice "toml" "yaml") .) }}
|
||||||
{{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }}
|
{{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder }}
|
||||||
|
@ -79,7 +89,11 @@ Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
|
||||||
{{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
|
{{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
|
||||||
</div>
|
</div>
|
||||||
{{- if $copy }}
|
{{- 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>
|
<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 */}}
|
{{- /* 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 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -3,19 +3,30 @@
|
||||||
{{ $list := (index (index .Site.Data.docs $package) $listname) }}
|
{{ $list := (index (index .Site.Data.docs $package) $listname) }}
|
||||||
{{ $fields := after 2 .Params }}
|
{{ $fields := after 2 .Params }}
|
||||||
|
|
||||||
|
|
||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<tr>
|
<tr>
|
||||||
{{ range $fields }}
|
{{ range $fields }}
|
||||||
<th>{{ . }}</th>
|
{{ $s := . }}
|
||||||
|
{{ if eq $s "_key" }}
|
||||||
|
{{ $s = "Type" }}
|
||||||
|
{{ end }}
|
||||||
|
<th>{{ $s }}</th>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tr>
|
</tr>
|
||||||
{{ range $list }}
|
{{ range $k1, $v1 := $list }}
|
||||||
<tr>
|
<tr>
|
||||||
{{ range $k, $v := . }}
|
{{ range $k2, $v2 := . }}
|
||||||
{{ $.Scratch.Set $k $v }}
|
{{ $.Scratch.Set $k2 $v2 }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ range $fields }}
|
{{ range $fields }}
|
||||||
<td>{{ $.Scratch.Get . }}</td>
|
{{ $s := "" }}
|
||||||
|
{{ if eq . "_key" }}
|
||||||
|
{{ $s = $k1 }}
|
||||||
|
{{ else }}
|
||||||
|
{{ $s = $.Scratch.Get . }}
|
||||||
|
{{ end }}
|
||||||
|
<td>{{ $s }}</td>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</tr>
|
</tr>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
|
@ -15,9 +15,11 @@
|
||||||
// is of limited interest for the general Hugo user.
|
// is of limited interest for the general Hugo user.
|
||||||
package docshelper
|
package docshelper
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
type (
|
type (
|
||||||
DocProviderFunc = func() DocProvider
|
DocProviderFunc = func() DocProvider
|
||||||
DocProvider map[string]map[string]any
|
DocProvider map[string]any
|
||||||
)
|
)
|
||||||
|
|
||||||
var docProviderFuncs []DocProviderFunc
|
var docProviderFuncs []DocProviderFunc
|
||||||
|
@ -32,20 +34,14 @@ func GetDocProvider() DocProvider {
|
||||||
for _, fn := range docProviderFuncs {
|
for _, fn := range docProviderFuncs {
|
||||||
p := fn()
|
p := fn()
|
||||||
for k, v := range p {
|
for k, v := range p {
|
||||||
if prev, found := provider[k]; !found {
|
if _, found := provider[k]; found {
|
||||||
provider[k] = v
|
// We use to merge config, but not anymore.
|
||||||
} else {
|
// These constructs will eventually go away, so just make it simple.
|
||||||
merge(prev, v)
|
panic(fmt.Sprintf("Duplicate doc provider key: %q", k))
|
||||||
}
|
}
|
||||||
|
provider[k] = v
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return provider
|
return provider
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shallow merge
|
|
||||||
func merge(dst, src map[string]any) {
|
|
||||||
for k, v := range src {
|
|
||||||
dst[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -16,12 +16,10 @@ package markup_config
|
||||||
import (
|
import (
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
"github.com/gohugoio/hugo/config"
|
"github.com/gohugoio/hugo/config"
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
|
||||||
"github.com/gohugoio/hugo/markup/asciidocext/asciidocext_config"
|
"github.com/gohugoio/hugo/markup/asciidocext/asciidocext_config"
|
||||||
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
|
"github.com/gohugoio/hugo/markup/goldmark/goldmark_config"
|
||||||
"github.com/gohugoio/hugo/markup/highlight"
|
"github.com/gohugoio/hugo/markup/highlight"
|
||||||
"github.com/gohugoio/hugo/markup/tableofcontents"
|
"github.com/gohugoio/hugo/markup/tableofcontents"
|
||||||
"github.com/gohugoio/hugo/parser"
|
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -108,10 +106,3 @@ var Default = Config{
|
||||||
Goldmark: goldmark_config.Default,
|
Goldmark: goldmark_config.Default,
|
||||||
AsciidocExt: asciidocext_config.Default,
|
AsciidocExt: asciidocext_config.Default,
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
docsProvider := func() docshelper.DocProvider {
|
|
||||||
return docshelper.DocProvider{"config": map[string]any{"markup": parser.LowerCaseCamelJSONMarshaller{Value: Default}}}
|
|
||||||
}
|
|
||||||
docshelper.AddDocProviderFunc(docsProvider)
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
package media
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
|
||||||
)
|
|
||||||
|
|
||||||
// This is is just some helpers used to create some JSON used in the Hugo docs.
|
|
||||||
func init() {
|
|
||||||
docsProvider := func() docshelper.DocProvider {
|
|
||||||
return docshelper.DocProvider{"media": map[string]any{"types": DefaultTypes}}
|
|
||||||
}
|
|
||||||
docshelper.AddDocProviderFunc(docsProvider)
|
|
||||||
}
|
|
|
@ -15,8 +15,6 @@ package minifiers
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gohugoio/hugo/common/maps"
|
"github.com/gohugoio/hugo/common/maps"
|
||||||
"github.com/gohugoio/hugo/docshelper"
|
|
||||||
"github.com/gohugoio/hugo/parser"
|
|
||||||
"github.com/spf13/cast"
|
"github.com/spf13/cast"
|
||||||
|
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
|
@ -113,10 +111,3 @@ func DecodeConfig(v any) (conf MinifyConfig, err error) {
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
docsProvider := func() docshelper.DocProvider {
|
|
||||||
return docshelper.DocProvider{"config": map[string]any{"minify": parser.LowerCaseCamelJSONMarshaller{Value: defaultConfig}}}
|
|
||||||
}
|
|
||||||
docshelper.AddDocProviderFunc(docsProvider)
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ func init() {
|
||||||
docsProvider := func() docshelper.DocProvider {
|
docsProvider := func() docshelper.DocProvider {
|
||||||
return docshelper.DocProvider{
|
return docshelper.DocProvider{
|
||||||
"output": map[string]any{
|
"output": map[string]any{
|
||||||
"formats": DefaultFormats,
|
|
||||||
"layouts": createLayoutExamples(),
|
"layouts": createLayoutExamples(),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue