summaryrefslogtreecommitdiffstats
path: root/resources/page/pagemeta
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-10-06 11:19:31 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-10-06 14:06:10 +0200
commit634938908ec8f393b9a05d26b4cfe19ca7abb0d0 (patch)
tree4726d31ba07f7391bade0b21a43694c29278fc69 /resources/page/pagemeta
parentc63db7f1f6774a2d661af1d8197c6fe377e3ad25 (diff)
pagemeta: Make BuildConfig.Render an enum
Allowing links on pages without rendering them. Fixes #7783
Diffstat (limited to 'resources/page/pagemeta')
-rw-r--r--resources/page/pagemeta/pagemeta.go21
-rw-r--r--resources/page/pagemeta/pagemeta_test.go58
2 files changed, 61 insertions, 18 deletions
diff --git a/resources/page/pagemeta/pagemeta.go b/resources/page/pagemeta/pagemeta.go
index 4e09b5ed7..19a0a7ae9 100644
--- a/resources/page/pagemeta/pagemeta.go
+++ b/resources/page/pagemeta/pagemeta.go
@@ -28,11 +28,12 @@ const (
Never = "never"
Always = "always"
ListLocally = "local"
+ Link = "link"
)
var defaultBuildConfig = BuildConfig{
List: Always,
- Render: true,
+ Render: Always,
PublishResources: true,
set: true,
}
@@ -49,7 +50,10 @@ type BuildConfig struct {
List string
// Whether to render it.
- Render bool
+ // Valid values: never, always, link.
+ // The value link means it will not be rendered, but it will get a RelPermalink/Permalink.
+ // Note that before 0.76.0 this was a bool, so we accept those too.
+ Render string
// Whether to publish its resources. These will still be published on demand,
// but enabling this can be useful if the originals (e.g. images) are
@@ -62,7 +66,7 @@ type BuildConfig struct {
// Disable sets all options to their off value.
func (b *BuildConfig) Disable() {
b.List = Never
- b.Render = false
+ b.Render = Never
b.PublishResources = false
b.set = true
}
@@ -91,5 +95,16 @@ func DecodeBuildConfig(m interface{}) (BuildConfig, error) {
b.List = Always
}
+ // In 0.76.0 we changed the Render from bool to a string.
+ switch b.Render {
+ case "0":
+ b.Render = Never
+ case "1":
+ b.Render = Always
+ case Always, Never, Link:
+ default:
+ b.Render = Always
+ }
+
return b, err
}
diff --git a/resources/page/pagemeta/pagemeta_test.go b/resources/page/pagemeta/pagemeta_test.go
index a66a1f432..c251e7dab 100644
--- a/resources/page/pagemeta/pagemeta_test.go
+++ b/resources/page/pagemeta/pagemeta_test.go
@@ -31,33 +31,61 @@ func TestDecodeBuildConfig(t *testing.T) {
configTempl := `
[_build]
-render = true
+render = %s
list = %s
publishResources = true`
for _, test := range []struct {
- list interface{}
- expect string
+ args []interface{}
+ expect BuildConfig
}{
- {"true", Always},
- {"false", Never},
- {`"always"`, Always},
- {`"local"`, ListLocally},
- {`"asdfadf"`, Always},
+ {
+ []interface{}{"true", "true"},
+ BuildConfig{
+ Render: Always,
+ List: Always,
+ PublishResources: true,
+ set: true,
+ }},
+ {[]interface{}{"true", "false"}, BuildConfig{
+ Render: Always,
+ List: Never,
+ PublishResources: true,
+ set: true,
+ }},
+ {[]interface{}{`"always"`, `"always"`}, BuildConfig{
+ Render: Always,
+ List: Always,
+ PublishResources: true,
+ set: true,
+ }},
+ {[]interface{}{`"never"`, `"never"`}, BuildConfig{
+ Render: Never,
+ List: Never,
+ PublishResources: true,
+ set: true,
+ }},
+ {[]interface{}{`"link"`, `"local"`}, BuildConfig{
+ Render: Link,
+ List: ListLocally,
+ PublishResources: true,
+ set: true,
+ }},
+ {[]interface{}{`"always"`, `"asdfadf"`}, BuildConfig{
+ Render: Always,
+ List: Always,
+ PublishResources: true,
+ set: true,
+ }},
} {
- cfg, err := config.FromConfigString(fmt.Sprintf(configTempl, test.list), "toml")
+ cfg, err := config.FromConfigString(fmt.Sprintf(configTempl, test.args...), "toml")
c.Assert(err, qt.IsNil)
bcfg, err := DecodeBuildConfig(cfg.Get("_build"))
c.Assert(err, qt.IsNil)
eq := qt.CmpEquals(hqt.DeepAllowUnexported(BuildConfig{}))
- c.Assert(bcfg, eq, BuildConfig{
- Render: true,
- List: test.expect,
- PublishResources: true,
- set: true,
- })
+ c.Assert(bcfg, eq, test.expect)
}