summaryrefslogtreecommitdiffstats
path: root/resources/internal
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-08-26 19:12:41 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2019-08-28 15:59:54 +0200
commit823f53c861bb49aecc6104e0add39fc3b0729025 (patch)
tree64a55d1c41de09b67305ad69a3600f3091d4f1fc /resources/internal
parentf9978ed16476ca6d233a89669c62c798cdf9db9d (diff)
Add a set of image filters
With this you can do variants of this: ``` {{ $img := resources.Get "images/misc/3-jenny.jpg" }} {{ $img := $img.Resize "300x" }} {{ $g1 := $img.Filter images.Grayscale }} {{ $g2 := $img | images.Filter (images.Saturate 30) (images.GaussianBlur 3) }} ``` Fixes #6255
Diffstat (limited to 'resources/internal')
-rw-r--r--resources/internal/key.go31
-rw-r--r--resources/internal/key_test.go9
2 files changed, 25 insertions, 15 deletions
diff --git a/resources/internal/key.go b/resources/internal/key.go
index 3dce8b350..17543b0d4 100644
--- a/resources/internal/key.go
+++ b/resources/internal/key.go
@@ -16,8 +16,6 @@ package internal
import (
"strconv"
- bp "github.com/gohugoio/hugo/bufferpool"
-
"github.com/mitchellh/hashstructure"
)
@@ -44,18 +42,23 @@ func (k ResourceTransformationKey) Value() string {
return k.Name
}
- sb := bp.GetBuffer()
- defer bp.PutBuffer(sb)
-
- sb.WriteString(k.Name)
- for _, element := range k.elements {
- hash, err := hashstructure.Hash(element, nil)
- if err != nil {
- panic(err)
- }
- sb.WriteString("_")
- sb.WriteString(strconv.FormatUint(hash, 10))
+ return k.Name + "_" + HashString(k.elements...)
+
+}
+
+// HashString returns a hash from the given elements.
+// It will panic if the hash cannot be calculated.
+func HashString(elements ...interface{}) string {
+ var o interface{}
+ if len(elements) == 1 {
+ o = elements[0]
+ } else {
+ o = elements
}
- return sb.String()
+ hash, err := hashstructure.Hash(o, nil)
+ if err != nil {
+ panic(err)
+ }
+ return strconv.FormatUint(hash, 10)
}
diff --git a/resources/internal/key_test.go b/resources/internal/key_test.go
index 9b6a23d87..11a52f2e6 100644
--- a/resources/internal/key_test.go
+++ b/resources/internal/key_test.go
@@ -32,5 +32,12 @@ func TestResourceTransformationKey(t *testing.T) {
key := NewResourceTransformationKey("testing",
testStruct{Name: "test", V1: int64(10), V2: int32(20), V3: 30, V4: uint64(40)})
c := qt.New(t)
- c.Assert("testing_518996646957295636", qt.Equals, key.Value())
+ c.Assert(key.Value(), qt.Equals, "testing_518996646957295636")
+}
+
+func TestHashString(t *testing.T) {
+ c := qt.New(t)
+
+ c.Assert(HashString("a", "b"), qt.Equals, "2712570657419664240")
+ c.Assert(HashString("ab"), qt.Equals, "590647783936702392")
}