]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/hashicorp/terraform/helper/hashcode/hashcode.go
deps: github.com/hashicorp/terraform@sdk-v0.11-with-go-modules
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / terraform / helper / hashcode / hashcode.go
1 package hashcode
2
3 import (
4 "bytes"
5 "fmt"
6 "hash/crc32"
7 )
8
9 // String hashes a string to a unique hashcode.
10 //
11 // crc32 returns a uint32, but for our use we need
12 // and non negative integer. Here we cast to an integer
13 // and invert it if the result is negative.
14 func String(s string) int {
15 v := int(crc32.ChecksumIEEE([]byte(s)))
16 if v >= 0 {
17 return v
18 }
19 if -v >= 0 {
20 return -v
21 }
22 // v == MinInt
23 return 0
24 }
25
26 // Strings hashes a list of strings to a unique hashcode.
27 func Strings(strings []string) string {
28 var buf bytes.Buffer
29
30 for _, s := range strings {
31 buf.WriteString(fmt.Sprintf("%s-", s))
32 }
33
34 return fmt.Sprintf("%d", String(buf.String()))
35 }