Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-29 12:44:09 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-01-29 12:44:09 +0300
commitdf20b05463fef42aba93d5208e410a7ecc56da5d (patch)
treeea09dcb297175ffd2d8c5d93174b9f9a91d8c27c /resource
parent863a812e07193541b42732b0e227f3d320433f01 (diff)
resource: Make resource counters for name and title independent
This is the most flexible with the current syntax, and probably what most people would expcect. Updates #4335
Diffstat (limited to 'resource')
-rw-r--r--resource/resource.go34
-rw-r--r--resource/resource_test.go12
2 files changed, 23 insertions, 23 deletions
diff --git a/resource/resource.go b/resource/resource.go
index dfda1ae7a..da62db65c 100644
--- a/resource/resource.go
+++ b/resource/resource.go
@@ -464,10 +464,10 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...Resource) er
}
var (
- nameSet, titleSet bool
- currentCounter = 0
- counterFound bool
- resourceSrcKey = strings.ToLower(r.Name())
+ nameSet, titleSet bool
+ nameCounter, titleCounter = 0, 0
+ nameCounterFound, titleCounterFound bool
+ resourceSrcKey = strings.ToLower(r.Name())
)
ma := r.(metaAssigner)
@@ -491,15 +491,16 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...Resource) er
name, found := meta["name"]
if found {
name := cast.ToString(name)
- if !counterFound {
- counterFound = strings.Contains(name, counterPlaceHolder)
+ if !nameCounterFound {
+ nameCounterFound = strings.Contains(name, counterPlaceHolder)
}
- if counterFound && currentCounter == 0 {
- currentCounter = counters[srcKey] + 1
- counters[srcKey] = currentCounter
+ if nameCounterFound && nameCounter == 0 {
+ counterKey := "name_" + srcKey
+ nameCounter = counters[counterKey] + 1
+ counters[counterKey] = nameCounter
}
- ma.setName(replaceResourcePlaceholders(name, currentCounter))
+ ma.setName(replaceResourcePlaceholders(name, nameCounter))
nameSet = true
}
}
@@ -508,14 +509,15 @@ func AssignMetadata(metadata []map[string]interface{}, resources ...Resource) er
title, found := meta["title"]
if found {
title := cast.ToString(title)
- if !counterFound {
- counterFound = strings.Contains(title, counterPlaceHolder)
+ if !titleCounterFound {
+ titleCounterFound = strings.Contains(title, counterPlaceHolder)
}
- if counterFound && currentCounter == 0 {
- currentCounter = counters[srcKey] + 1
- counters[srcKey] = currentCounter
+ if titleCounterFound && titleCounter == 0 {
+ counterKey := "title_" + srcKey
+ titleCounter = counters[counterKey] + 1
+ counters[counterKey] = titleCounter
}
- ma.setTitle((replaceResourcePlaceholders(title, currentCounter)))
+ ma.setTitle((replaceResourcePlaceholders(title, titleCounter)))
titleSet = true
}
}
diff --git a/resource/resource_test.go b/resource/resource_test.go
index fc6416e6a..1ff979846 100644
--- a/resource/resource_test.go
+++ b/resource/resource_test.go
@@ -280,14 +280,14 @@ func TestAssignMetadata(t *testing.T) {
},
}, func(err error) {
assert.NoError(err)
- assert.Equal("Resource #1", logo2.Title())
+ assert.Equal("Resource #2", logo2.Title())
assert.Equal("Logo Name #1", logo2.Name())
- assert.Equal("Resource #2", logo1.Title())
+ assert.Equal("Resource #4", logo1.Title())
assert.Equal("Logo Name #2", logo1.Name())
assert.Equal("Resource #1", foo2.Title())
- assert.Equal("Resource #2", foo1.Title())
+ assert.Equal("Resource #3", foo1.Title())
assert.Equal("Name #2", foo1.Name())
- assert.Equal("Resource #3", foo3.Title())
+ assert.Equal("Resource #5", foo3.Title())
assert.Equal(logo2, resources.GetByPrefix("logo name #1"))
@@ -305,15 +305,13 @@ func TestAssignMetadata(t *testing.T) {
}, func(err error) {
assert.NoError(err)
assert.Equal("Third Logo #1", logo3.Title())
- assert.Equal("Name #1", logo3.Name())
+ assert.Equal("Name #3", logo3.Name())
assert.Equal("Other Logo #1", logo2.Title())
assert.Equal("Name #1", logo2.Name())
assert.Equal("Other Logo #2", logo1.Title())
assert.Equal("Name #2", logo1.Name())
}},
- // Start counting first time :counter is used
- // See https://github.com/gohugoio/hugo/issues/4335
{[]map[string]interface{}{
map[string]interface{}{
"title": "Third Logo",