// HashSha512Func Hash a value to SHA512 string // // hash.sha512("/blog/index.html") => abc345xyz // func HashSha512Func(ctx expr.EvalContext, arg value.Value) (value.StringValue, bool) { if arg.Err() || arg.Nil() { return value.EmptyStringValue, true } hasher := sha512.New() hasher.Write([]byte(arg.ToString())) return value.NewStringValue(hex.EncodeToString(hasher.Sum(nil))), true }
// Map() Create a map from two values. If the right side value is nil // then does not evaluate // // Map(left, right) => map[string]value{left:right} // func MapFunc(ctx expr.EvalContext, lv, rv value.Value) (value.MapValue, bool) { if lv.Err() || rv.Err() { return value.EmptyMapValue, false } if lv.Nil() || rv.Nil() { return value.EmptyMapValue, false } return value.NewMapValue(map[string]interface{}{lv.ToString(): rv.Value()}), true }