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
path: root/common
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-05-29 19:50:12 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-05-29 20:51:49 +0300
commit2919a6a503f7b369154d6eb787023a1fe58a9ad4 (patch)
treed2d1a4a73d67471a5ae62b394f6055aa5288f601 /common
parent432885c499849efb29d3e50196f377fe0e908333 (diff)
common/maps: Add Scratch.Values
Fixes #7335
Diffstat (limited to 'common')
-rw-r--r--common/maps/scratch.go11
-rw-r--r--common/maps/scratch_test.go3
2 files changed, 13 insertions, 1 deletions
diff --git a/common/maps/scratch.go b/common/maps/scratch.go
index 4acd10c6c..7a3cd3748 100644
--- a/common/maps/scratch.go
+++ b/common/maps/scratch.go
@@ -107,6 +107,15 @@ func (c *Scratch) Get(key string) interface{} {
return val
}
+// Values returns the raw backing map. Note that you should just use
+// this method on the locally scoped Scratch instances you obtain via newScratch, not
+// .Page.Scratch etc., as that will lead to concurrency issues.
+func (c *Scratch) Values() map[string]interface{} {
+ c.mu.RLock()
+ defer c.mu.RUnlock()
+ return c.values
+}
+
// SetInMap stores a value to a map with the given key in the Node context.
// This map can later be retrieved with GetSortedMapValues.
func (c *Scratch) SetInMap(key string, mapKey string, value interface{}) string {
@@ -147,7 +156,7 @@ func (c *Scratch) GetSortedMapValues(key string) interface{} {
return sortedArray
}
-// NewScratch returns a new instance Scratch.
+// NewScratch returns a new instance of Scratch.
func NewScratch() *Scratch {
return &Scratch{values: make(map[string]interface{})}
}
diff --git a/common/maps/scratch_test.go b/common/maps/scratch_test.go
index c2c436e40..40df3bb6b 100644
--- a/common/maps/scratch_test.go
+++ b/common/maps/scratch_test.go
@@ -47,6 +47,9 @@ func TestScratchAdd(t *testing.T) {
scratch.Add("scratch", scratch)
_, err := scratch.Add("scratch", scratch)
+ m := scratch.Values()
+ c.Assert(m, qt.HasLen, 5)
+
if err == nil {
t.Errorf("Expected error from invalid arithmetic")
}