diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-03-18 00:03:27 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2022-03-18 00:03:27 +0300 |
commit | b80853de90b10171155b8f3fde47d64ec7bfa0dd (patch) | |
tree | 435d3dbf7a495a0c6ce64c9769e037179aa0d27b /common | |
parent | 423594e03a906ef4150f433666ff588b022c3c92 (diff) |
all: gofmt -w -r 'interface{} -> any' .
Updates #9687
Diffstat (limited to 'common')
30 files changed, 181 insertions, 179 deletions
diff --git a/common/collections/append.go b/common/collections/append.go index d6fb89241..a9c14c1aa 100644 --- a/common/collections/append.go +++ b/common/collections/append.go @@ -21,7 +21,7 @@ import ( // Append appends from to a slice to and returns the resulting slice. // If length of from is one and the only element is a slice of same type as to, // it will be appended. -func Append(to interface{}, from ...interface{}) (interface{}, error) { +func Append(to any, from ...any) (any, error) { tov, toIsNil := indirect(reflect.ValueOf(to)) toIsNil = toIsNil || to == nil @@ -73,8 +73,8 @@ func Append(to interface{}, from ...interface{}) (interface{}, error) { return tov.Interface(), nil } -func appendToInterfaceSliceFromValues(slice1, slice2 reflect.Value) ([]interface{}, error) { - var tos []interface{} +func appendToInterfaceSliceFromValues(slice1, slice2 reflect.Value) ([]any, error) { + var tos []any for _, slice := range []reflect.Value{slice1, slice2} { for i := 0; i < slice.Len(); i++ { @@ -85,8 +85,8 @@ func appendToInterfaceSliceFromValues(slice1, slice2 reflect.Value) ([]interface return tos, nil } -func appendToInterfaceSlice(tov reflect.Value, from ...interface{}) ([]interface{}, error) { - var tos []interface{} +func appendToInterfaceSlice(tov reflect.Value, from ...any) ([]any, error) { + var tos []any for i := 0; i < tov.Len(); i++ { tos = append(tos, tov.Index(i).Interface()) diff --git a/common/collections/append_test.go b/common/collections/append_test.go index 7d6117de8..6df32fee6 100644 --- a/common/collections/append_test.go +++ b/common/collections/append_test.go @@ -25,25 +25,25 @@ func TestAppend(t *testing.T) { c := qt.New(t) for _, test := range []struct { - start interface{} - addend []interface{} - expected interface{} + start any + addend []any + expected any }{ - {[]string{"a", "b"}, []interface{}{"c"}, []string{"a", "b", "c"}}, - {[]string{"a", "b"}, []interface{}{"c", "d", "e"}, []string{"a", "b", "c", "d", "e"}}, - {[]string{"a", "b"}, []interface{}{[]string{"c", "d", "e"}}, []string{"a", "b", "c", "d", "e"}}, - {[]string{"a"}, []interface{}{"b", template.HTML("c")}, []interface{}{"a", "b", template.HTML("c")}}, - {nil, []interface{}{"a", "b"}, []string{"a", "b"}}, - {nil, []interface{}{nil}, []interface{}{nil}}, - {[]interface{}{}, []interface{}{[]string{"c", "d", "e"}}, []string{"c", "d", "e"}}, + {[]string{"a", "b"}, []any{"c"}, []string{"a", "b", "c"}}, + {[]string{"a", "b"}, []any{"c", "d", "e"}, []string{"a", "b", "c", "d", "e"}}, + {[]string{"a", "b"}, []any{[]string{"c", "d", "e"}}, []string{"a", "b", "c", "d", "e"}}, + {[]string{"a"}, []any{"b", template.HTML("c")}, []any{"a", "b", template.HTML("c")}}, + {nil, []any{"a", "b"}, []string{"a", "b"}}, + {nil, []any{nil}, []any{nil}}, + {[]any{}, []any{[]string{"c", "d", "e"}}, []string{"c", "d", "e"}}, { tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, - []interface{}{&tstSlicer{"c"}}, + []any{&tstSlicer{"c"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}, &tstSlicer{"c"}}, }, { &tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}, - []interface{}{&tstSlicer{"c"}}, + []any{&tstSlicer{"c"}}, tstSlicers{ &tstSlicer{"a"}, &tstSlicer{"b"}, @@ -52,26 +52,26 @@ func TestAppend(t *testing.T) { }, { testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}}, - []interface{}{&tstSlicerIn1{"c"}}, + []any{&tstSlicerIn1{"c"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn1{"b"}, &tstSlicerIn1{"c"}}, }, //https://github.com/gohugoio/hugo/issues/5361 { []string{"a", "b"}, - []interface{}{tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, - []interface{}{"a", "b", &tstSlicer{"a"}, &tstSlicer{"b"}}, + []any{tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, + []any{"a", "b", &tstSlicer{"a"}, &tstSlicer{"b"}}, }, { []string{"a", "b"}, - []interface{}{&tstSlicer{"a"}}, - []interface{}{"a", "b", &tstSlicer{"a"}}, + []any{&tstSlicer{"a"}}, + []any{"a", "b", &tstSlicer{"a"}}, }, // Errors - {"", []interface{}{[]string{"a", "b"}}, false}, + {"", []any{[]string{"a", "b"}}, false}, // No string concatenation. { "ab", - []interface{}{"c"}, + []any{"c"}, false, }, } { diff --git a/common/collections/collections.go b/common/collections/collections.go index bb47c8acc..0b46abee9 100644 --- a/common/collections/collections.go +++ b/common/collections/collections.go @@ -17,5 +17,5 @@ package collections // Grouper defines a very generic way to group items by a given key. type Grouper interface { - Group(key interface{}, items interface{}) (interface{}, error) + Group(key any, items any) (any, error) } diff --git a/common/collections/slice.go b/common/collections/slice.go index 07ad48eb3..51cb6ec1f 100644 --- a/common/collections/slice.go +++ b/common/collections/slice.go @@ -21,11 +21,11 @@ import ( // in collections.Slice template func to get types such as Pages, PageGroups etc. // instead of the less useful []interface{}. type Slicer interface { - Slice(items interface{}) (interface{}, error) + Slice(items any) (any, error) } // Slice returns a slice of all passed arguments. -func Slice(args ...interface{}) interface{} { +func Slice(args ...any) any { if len(args) == 0 { return args } @@ -66,8 +66,8 @@ func Slice(args ...interface{}) interface{} { } // StringSliceToInterfaceSlice converts ss to []interface{}. -func StringSliceToInterfaceSlice(ss []string) []interface{} { - result := make([]interface{}, len(ss)) +func StringSliceToInterfaceSlice(ss []string) []any { + result := make([]any, len(ss)) for i, s := range ss { result[i] = s } diff --git a/common/collections/slice_test.go b/common/collections/slice_test.go index 93bad84da..8e6553994 100644 --- a/common/collections/slice_test.go +++ b/common/collections/slice_test.go @@ -46,8 +46,8 @@ type tstSlicer struct { TheName string } -func (p *tstSlicerIn1) Slice(in interface{}) (interface{}, error) { - items := in.([]interface{}) +func (p *tstSlicerIn1) Slice(in any) (any, error) { + items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { @@ -60,8 +60,8 @@ func (p *tstSlicerIn1) Slice(in interface{}) (interface{}, error) { return result, nil } -func (p *tstSlicerIn2) Slice(in interface{}) (interface{}, error) { - items := in.([]interface{}) +func (p *tstSlicerIn2) Slice(in any) (any, error) { + items := in.([]any) result := make(testSlicerInterfaces, len(items)) for i, v := range items { switch vv := v.(type) { @@ -82,8 +82,8 @@ func (p *tstSlicerIn2) Name() string { return p.TheName } -func (p *tstSlicer) Slice(in interface{}) (interface{}, error) { - items := in.([]interface{}) +func (p *tstSlicer) Slice(in any) (any, error) { + items := in.([]any) result := make(tstSlicers, len(items)) for i, v := range items { switch vv := v.(type) { @@ -103,17 +103,17 @@ func TestSlice(t *testing.T) { c := qt.New(t) for i, test := range []struct { - args []interface{} - expected interface{} + args []any + expected any }{ - {[]interface{}{"a", "b"}, []string{"a", "b"}}, - {[]interface{}{&tstSlicer{"a"}, &tstSlicer{"b"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, - {[]interface{}{&tstSlicer{"a"}, "b"}, []interface{}{&tstSlicer{"a"}, "b"}}, - {[]interface{}{}, []interface{}{}}, - {[]interface{}{nil}, []interface{}{nil}}, - {[]interface{}{5, "b"}, []interface{}{5, "b"}}, - {[]interface{}{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}}, - {[]interface{}{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}, []interface{}{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}}, + {[]any{"a", "b"}, []string{"a", "b"}}, + {[]any{&tstSlicer{"a"}, &tstSlicer{"b"}}, tstSlicers{&tstSlicer{"a"}, &tstSlicer{"b"}}}, + {[]any{&tstSlicer{"a"}, "b"}, []any{&tstSlicer{"a"}, "b"}}, + {[]any{}, []any{}}, + {[]any{nil}, []any{nil}}, + {[]any{5, "b"}, []any{5, "b"}}, + {[]any{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}, testSlicerInterfaces{&tstSlicerIn1{"a"}, &tstSlicerIn2{"b"}}}, + {[]any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}, []any{&tstSlicerIn1{"a"}, &tstSlicer{"b"}}}, } { errMsg := qt.Commentf("[%d] %v", i, test.args) diff --git a/common/herrors/errors.go b/common/herrors/errors.go index 00aed1eb6..27cfd2693 100644 --- a/common/herrors/errors.go +++ b/common/herrors/errors.go @@ -65,7 +65,7 @@ type ErrorSender interface { // Recover is a helper function that can be used to capture panics. // Put this at the top of a method/function that crashes in a template: // defer herrors.Recover() -func Recover(args ...interface{}) { +func Recover(args ...any) { if r := recover(); r != nil { fmt.Println("ERR:", r) args = append(args, "stacktrace from panic: \n"+string(debug.Stack()), "\n") diff --git a/common/hexec/exec.go b/common/hexec/exec.go index a8bdd1bb7..7a9fdd938 100644 --- a/common/hexec/exec.go +++ b/common/hexec/exec.go @@ -128,7 +128,7 @@ type Exec struct { // New will fail if name is not allowed according to the configured security policy. // Else a configured Runner will be returned ready to be Run. -func (e *Exec) New(name string, arg ...interface{}) (Runner, error) { +func (e *Exec) New(name string, arg ...any) (Runner, error) { if err := e.sc.CheckAllowedExec(name); err != nil { return nil, err } @@ -146,8 +146,8 @@ func (e *Exec) New(name string, arg ...interface{}) (Runner, error) { } // Npx is a convenience method to create a Runner running npx --no-install <name> <args. -func (e *Exec) Npx(name string, arg ...interface{}) (Runner, error) { - arg = append(arg[:0], append([]interface{}{"--no-install", name}, arg[0:]...)...) +func (e *Exec) Npx(name string, arg ...any) (Runner, error) { + arg = append(arg[:0], append([]any{"--no-install", name}, arg[0:]...)...) return e.New("npx", arg...) } @@ -205,7 +205,7 @@ type commandeer struct { env []string } -func (c *commandeer) command(arg ...interface{}) (*cmdWrapper, error) { +func (c *commandeer) command(arg ...any) (*cmdWrapper, error) { if c == nil { return nil, nil } diff --git a/common/hreflect/helpers.go b/common/hreflect/helpers.go index 7087a9677..7f3ef7ac2 100644 --- a/common/hreflect/helpers.go +++ b/common/hreflect/helpers.go @@ -62,7 +62,7 @@ func IsFloat(kind reflect.Kind) bool { // IsTruthful returns whether in represents a truthful value. // See IsTruthfulValue -func IsTruthful(in interface{}) bool { +func IsTruthful(in any) bool { switch v := in.(type) { case reflect.Value: return IsTruthfulValue(v) diff --git a/common/htime/time.go b/common/htime/time.go index 9ab249d38..552608b6f 100644 --- a/common/htime/time.go +++ b/common/htime/time.go @@ -134,7 +134,7 @@ func (f TimeFormatter) Format(t time.Time, layout string) string { return s } -func ToTimeInDefaultLocationE(i interface{}, location *time.Location) (tim time.Time, err error) { +func ToTimeInDefaultLocationE(i any, location *time.Location) (tim time.Time, err error) { switch vv := i.(type) { case toml.LocalDate: return vv.AsTime(location), nil diff --git a/common/hugo/vars_extended.go b/common/hugo/vars_extended.go index bb96bade6..edbaff243 100644 --- a/common/hugo/vars_extended.go +++ b/common/hugo/vars_extended.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build extended // +build extended package hugo diff --git a/common/hugo/vars_regular.go b/common/hugo/vars_regular.go index fae18df14..223df4b6c 100644 --- a/common/hugo/vars_regular.go +++ b/common/hugo/vars_regular.go @@ -11,6 +11,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build !extended // +build !extended package hugo diff --git a/common/hugo/version.go b/common/hugo/version.go index b085744c9..0c78174c5 100644 --- a/common/hugo/version.go +++ b/common/hugo/version.go @@ -58,13 +58,13 @@ func (h VersionString) String() string { } // Compare implements the compare.Comparer interface. -func (h VersionString) Compare(other interface{}) int { +func (h VersionString) Compare(other any) int { v := MustParseVersion(h.String()) return compareVersionsWithSuffix(v.Number, v.PatchLevel, v.Suffix, other) } // Eq implements the compare.Eqer interface. -func (h VersionString) Eq(other interface{}) bool { +func (h VersionString) Eq(other any) bool { s, err := cast.ToStringE(other) if err != nil { return false @@ -171,15 +171,15 @@ func version(version float32, patchVersion int, suffix string) string { // running Hugo version. // It returns -1 if the given version is less than, 0 if equal and 1 if greater than // the running version. -func CompareVersion(version interface{}) int { +func CompareVersion(version any) int { return compareVersionsWithSuffix(CurrentVersion.Number, CurrentVersion.PatchLevel, CurrentVersion.Suffix, version) } -func compareVersions(inVersion float32, inPatchVersion int, in interface{}) int { +func compareVersions(inVersion float32, inPatchVersion int, in any) int { return compareVersionsWithSuffix(inVersion, inPatchVersion, "", in) } -func compareVersionsWithSuffix(inVersion float32, inPatchVersion int, suffix string, in interface{}) int { +func compareVersionsWithSuffix(inVersion float32, inPatchVersion int, suffix string, in any) int { var c int switch d := in.(type) { case float64: diff --git a/common/loggers/ignorableLogger.go b/common/loggers/ignorableLogger.go index 0a130900d..5040d1036 100644 --- a/common/loggers/ignorableLogger.go +++ b/common/loggers/ignorableLogger.go @@ -21,7 +21,7 @@ import ( // IgnorableLogger is a logger that ignores certain log statements. type IgnorableLogger interface { Logger - Errorsf(statementID, format string, v ...interface{}) + Errorsf(statementID, format string, v ...any) Apply(logger Logger) IgnorableLogger } @@ -43,7 +43,7 @@ func NewIgnorableLogger(logger Logger, statements ...string) IgnorableLogger { } // Errorsf logs statementID as an ERROR if not configured as ignoreable. -func (l ignorableLogger) Errorsf(statementID, format string, v ...interface{}) { +func (l ignorableLogger) Errorsf(statementID, format string, v ...any) { if l.statements[statementID] { // Ignore. return diff --git a/common/loggers/loggers.go b/common/loggers/loggers.go index 72330e525..14c76ae45 100644 --- a/common/loggers/loggers.go +++ b/common/loggers/loggers.go @@ -58,21 +58,21 @@ func (w prefixWriter) Write(p []byte) (n int, err error) { } type Logger interface { - Printf(format string, v ...interface{}) - Println(v ...interface{}) + Printf(format string, v ...any) + Println(v ...any) PrintTimerIfDelayed(start time.Time, name string) Debug() *log.Logger - Debugf(format string, v ...interface{}) - Debugln(v ...interface{}) + Debugf(format string, v ...any) + Debugln(v ...any) Info() *log.Logger - Infof(format string, v ...interface{}) - Infoln(v ...interface{}) + Infof(format string, v ...any) + Infoln(v ...any) Warn() *log.Logger - Warnf(format string, v ...interface{}) - Warnln(v ...interface{}) + Warnf(format string, v ...any) + Warnln(v ...any) Error() *log.Logger - Errorf(format string, v ...interface{}) - Errorln(v ...interface{}) + Errorf(format string, v ...any) + Errorln(v ...any) Errors() string Out() io.Writer @@ -101,11 +101,11 @@ type logger struct { errors *bytes.Buffer } -func (l *logger) Printf(format string, v ...interface{}) { +func (l *logger) Printf(format string, v ...any) { l.FEEDBACK.Printf(format, v...) } -func (l *logger) Println(v ...interface{}) { +func (l *logger) Println(v ...any) { l.FEEDBACK.Println(v...) } @@ -113,19 +113,19 @@ func (l *logger) Debug() *log.Logger { return l.DEBUG } -func (l *logger) Debugf(format string, v ...interface{}) { +func (l *logger) Debugf(format string, v ...any) { l.DEBUG.Printf(format, v...) } -func (l *logger) Debugln(v ...interface{}) { +func (l *logger) Debugln(v ...any) { l.DEBUG.Println(v...) } -func (l *logger) Infof(format string, v ...interface{}) { +func (l *logger) Infof(format string, v ...any) { l.INFO.Printf(format, v...) } -func (l *logger) Infoln(v ...interface{}) { +func (l *logger) Infoln(v ...any) { l.INFO.Println(v...) } @@ -135,14 +135,14 @@ func (l *logger) Info() *log.Logger { const panicOnWarningMessage = "Warning trapped. Remove the --panicOnWarning flag to continue." -func (l *logger) Warnf(format string, v ...interface{}) { +func (l *logger) Warnf(format string, v ...any) { l.WARN.Printf(format, v...) if PanicOnWarning { panic(panicOnWarningMessage) } } -func (l *logger) Warnln(v ...interface{}) { +func (l *logger) Warnln(v ...any) { l.WARN.Println(v...) if PanicOnWarning { panic(panicOnWarningMessage) @@ -153,11 +153,11 @@ func (l *logger) Warn() *log.Logger { return l.WARN } -func (l *logger) Errorf(format string, v ...interface{}) { +func (l *logger) Errorf(format string, v ...any) { l.ERROR.Printf(format, v...) } -func (l *logger) Errorln(v ...interface{}) { +func (l *logger) Errorln(v ...any) { l.ERROR.Println(v...) } diff --git a/common/maps/maps.go b/common/maps/maps.go index b5e9ba2f5..5552da55d 100644 --- a/common/maps/maps.go +++ b/common/maps/maps.go @@ -24,12 +24,12 @@ import ( ) // ToStringMapE converts in to map[string]interface{}. -func ToStringMapE(in interface{}) (map[string]interface{}, error) { +func ToStringMapE(in any) (map[string]any, error) { switch vv := in.(type) { case Params: return vv, nil case map[string]string: - var m = map[string]interface{}{} + var m = map[string]any{} for k, v := range vv { m[k] = v } @@ -43,7 +43,7 @@ func ToStringMapE(in interface{}) (map[string]interface{}, error) { // ToParamsAndPrepare converts in to Params and prepares it for use. // If in is nil, an empty map is returned. // See PrepareParams. -func ToParamsAndPrepare(in interface{}) (Params, bool) { +func ToParamsAndPrepare(in any) (Params, bool) { if types.IsNil(in) { return Params{}, true } @@ -56,7 +56,7 @@ func ToParamsAndPrepare(in interface{}) (Params, bool) { } // MustToParamsAndPrepare calls ToParamsAndPrepare and panics if it fails. -func MustToParamsAndPrepare(in interface{}) Params { +func MustToParamsAndPrepare(in any) Params { if p, ok := ToParamsAndPrepare(in); ok { return p } else { @@ -65,13 +65,13 @@ func MustToParamsAndPrepare(in interface{}) Params { } // ToStringMap converts in to map[string]interface{}. -func ToStringMap(in interface{}) map[string]interface{} { +func ToStringMap(in any) map[string]any { m, _ := ToStringMapE(in) return m } // ToStringMapStringE converts in to map[string]string. -func ToStringMapStringE(in interface{}) (map[string]string, error) { +func ToStringMapStringE(in any) (map[string]string, error) { m, err := ToStringMapE(in) if err != nil { return nil, err @@ -80,26 +80,26 @@ func ToStringMapStringE(in interface{}) (map[string]string, error) { } // ToStringMapString converts in to map[string]string. -func ToStringMapString(in interface{}) map[string]string { +func ToStringMapString(in any) map[string]string { m, _ := ToStringMapStringE(in) return m } // ToStringMapBool converts in to bool. -func ToStringMapBool(in interface{}) map[string]bool { +func ToStringMapBool(in any) map[string]bool { m, _ := ToStringMapE(in) return cast.ToStringMapBool(m) } // ToSliceStringMap converts in to []map[string]interface{}. -func ToSliceStringMap(in interface{}) ([]map[string]interface{}, error) { +func ToSliceStringMap(in any) ([]map[string]any, error) { switch v := in.(type) { - case []map[string]interface{}: + case []map[string]any: return v, nil - case []interface{}: - var s []map[string]interface{} + case []any: + var s []map[string]any for _, entry := range v { - if vv, ok := entry.(map[string]interface{}); ok { + if vv, ok := entry.(map[string]any); ok { s = append(s, vv) } } @@ -146,7 +146,7 @@ func (r KeyRenamer) getNewKey(keyPath string) string { // Rename renames the keys in the given map according // to the patterns in the current KeyRenamer. -func (r KeyRenamer) Rename(m map[string]interface{}) { +func (r KeyRenamer) Rename(m map[string]any) { r.renamePath("", m) } @@ -158,15 +158,15 @@ func (KeyRenamer) keyPath(k1, k2 string) string { return k1 + "/" + k2 } -func (r KeyRenamer) renamePath(parentKeyPath string, m map[string]interface{}) { +func (r KeyRenamer) renamePath(parentKeyPath string, m map[string]any) { for key, val := range m { keyPath := r.keyPath(parentKeyPath, key) switch val.(type) { - case map[interface{}]interface{}: + case map[any]any: val = cast.ToStringMap(val) - r.renamePath(keyPath, val.(map[string]interface{})) - case map[string]interface{}: - r.renamePath(keyPath, val.(map[string]interface{})) + r.renamePath(keyPath, val.(map[string]any)) + case map[string]any: + r.renamePath(keyPath, val.(map[string]any)) } newKey := r.getNewKey(keyPath) diff --git a/common/maps/maps_test.go b/common/maps/maps_test.go index f0c32b9fe..53120dce7 100644 --- a/common/maps/maps_test.go +++ b/common/maps/maps_test.go @@ -27,7 +27,7 @@ func TestPrepareParams(t *testing.T) { expected Params }{ { - map[string]interface{}{ + map[string]any{ "abC": 32, }, Params{ @@ -35,16 +35,16 @@ func TestPrepareParams(t *testing.T) { }, }, { - map[string]interface{}{ + map[string]any{ "abC": 32, - "deF": map[interface{}]interface{}{ + "deF": map[any]any{ 23: "A value", - 24: map[string]interface{}{ + 24: map[string]any{ "AbCDe": "A value", "eFgHi": "Another value", }, }, - "gHi": map[string]interface{}{ + "gHi": map[string]any{ "J": 25, }, "jKl": map[string]string{ @@ -85,23 +85,23 @@ func TestToSliceStringMap(t *testing.T) { c := qt.New(t) tests := []struct { - input interface{} - expected []map[string]interface{} + input any + expected []map[string]any }{ { - input: []map[string]interface{}{ + input: []map[string]any{ {"abc": 123}, }, - expected: []map[string]interface{}{ + expected: []map[string]any{ {"abc": 123}, }, }, { - input: []interface{}{ - map[string]interface{}{ + input: []any{ + map[string]any{ "def": 456, }, }, - expected: []map[string]interface{}{ + expected: []map[string]any{ {"def": 456}, }, }, @@ -116,7 +116,7 @@ func TestToSliceStringMap(t *testing.T) { func TestToParamsAndPrepare(t *testing.T) { c := qt.New(t) - _, ok := ToParamsAndPrepare(map[string]interface{}{"A": "av"}) + _, ok := ToParamsAndPrepare(map[string]any{"A": "av"}) c.Assert(ok, qt.IsTrue) params, ok := ToParamsAndPrepare(nil) @@ -127,33 +127,33 @@ func TestToParamsAndPrepare(t *testing.T) { func TestRenameKeys(t *testing.T) { c := qt.New(t) - m := map[string]interface{}{ + m := map[string]any{ "a": 32, "ren1": "m1", "ren2": "m1_2", - "sub": map[string]interface{}{ - "subsub": map[string]interface{}{ + "sub": map[string]any{ + "subsub": map[string]any{ "REN1": "m2", "ren2": "m2_2", }, }, - "no": map[string]interface{}{ + "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, } - expected := map[string]interface{}{ + expected := map[string]any{ "a": 32, "new1": "m1", "new2": "m1_2", - "sub": map[string]interface{}{ - "subsub": map[string]interface{}{ + "sub": map[string]any{ + "subsub": map[string]any{ "new1": "m2", "ren2": "m2_2", }, }, - "no": map[string]interface{}{ + "no": map[string]any{ "ren1": "m2", "ren2": "m2_2", }, diff --git a/common/maps/params.go b/common/maps/params.go index 15511f56f..60fe56668 100644 --- a/common/maps/params.go +++ b/common/maps/params.go @@ -21,11 +21,11 @@ import ( ) // Params is a map where all keys are lower case. -type Params map[string]interface{} +type Params map[string]any // Get does a lower case and nested search in this map. // It will return nil if none found. -func (p Params) Get(indices ...string) interface{} { +func (p Params) Get(indices ...string) any { v, _, _ := getNested(p, indices) return v } @@ -142,7 +142,7 @@ func (p Params) SetDefaultMergeStrategy(s ParamsMergeStrategy) { p[mergeStrategyKey] = s } -func getNested(m map[string]interface{}, indices []string) (interface{}, string, map[string]interface{}) { +func getNested(m map[string]any, indices []string) (any, string, map[string]any) { if len(indices) == 0 { return nil, "", nil } @@ -164,7 +164,7 @@ func getNested(m map[string]interface{}, indices []string) (interface{}, string, switch m2 := v.(type) { case Params: return getNested(m2, indices[1:]) - case map[string]interface{}: + case map[string]any: return getNested(m2, indices[1:]) default: return nil, "", nil @@ -175,7 +175,7 @@ func getNested(m map[string]interface{}, indices []string) (interface{}, string, // It will first try the exact match and then try to find it as a nested map value, // using the given separator, e.g. "mymap.name". // It assumes that all the maps given have lower cased keys. -func GetNestedParam(keyStr, separator string, candidates ...Params) (interface{}, error) { +func GetNestedParam(keyStr, separator string, candidates ...Params) (any, error) { keyStr = strings.ToLower(keyStr) // Try exact match first @@ -195,7 +195,7 @@ func GetNestedParam(keyStr, separator string, candidates ...Params) (interface{} return nil, nil } -func GetNestedParamFn(keyStr, separator string, lookupFn func(key string) interface{}) (interface{}, string, map[string]interface{}, error) { +func GetNestedParamFn(keyStr, separator string, lookupFn func(key string) any) (any, string, map[string]any, error) { keySegments := strings.Split(keyStr, separator) if len(keySegments) == 0 { return nil, "", nil, nil @@ -211,7 +211,7 @@ func GetNestedParamFn(keyStr, separator string, lookupFn func(key string) interf } switch m := first.(type) { - case map[string]interface{}: + case map[string]any: v, key, owner := getNested(m, keySegments[1:]) return v, key, owner, nil case Params: @@ -236,7 +236,7 @@ const ( mergeStrategyKey = "_merge" ) -func toMergeStrategy(v interface{}) ParamsMergeStrategy { +func toMergeStrategy(v any) ParamsMergeStrategy { s := ParamsMergeStrategy(cast.ToString(v)) switch s { case ParamsMergeStrategyDeep, ParamsMergeStrategyNone, ParamsMergeStrategyShallow: @@ -260,13 +260,13 @@ func PrepareParams(m Params) { retyped = true } else { switch vv := v.(type) { - case map[interface{}]interface{}: + case map[any]any: var p Params = cast.ToStringMap(v) v = p PrepareParams(p) retyped = true - case map[string]interface{}: - var p Params = v.(map[string]interface{}) + case map[string]any: + var p Params = v.(map[string]any) v = p PrepareParams(p) retyped = true diff --git a/common/maps/params_test.go b/common/maps/params_test.go index 5c799aae1..a070e6f60 100644 --- a/common/maps/params_test.go +++ b/common/maps/params_test.go @@ -20,13 +20,13 @@ import ( ) func TestGetNestedParam(t *testing.T) { - m := map[string]interface{}{ + m := map[string]any{ "string": "value", "first": 1, "with_underscore": 2, - "nested": map[string]interface{}{ + "nested": map[string]any{ "color": "blue", - "nestednested": map[string]interface{}{ + "nestednested": map[string]any{ "color": "green", }, }, @@ -34,7 +34,7 @@ func TestGetNestedParam(t *testing.T) { c := qt.New(t) - must := func(keyStr, separator string, candidates ...Params) interface{} { + must := func(keyStr, separator string, candidates ...Params) any { v, err := GetNestedParam(keyStr, separator, candidates...) c.Assert(err, qt.IsNil) return v @@ -53,14 +53,14 @@ func TestGetNestedParam(t *testing.T) { func TestGetNestedParamFnNestedNewKey(t *testing.T) { c := qt.New(t) - nested := map[string]interface{}{ + nested := map[string]any{ "color": "blue", } - m := map[string]interface{}{ + m := map[string]any{ "nested": nested, } - existing, nestedKey, owner, err := GetNestedParamFn("nested.new", ".", func(key string) interface{} { + existing, nestedKey, owner, err := GetNestedParamFn("nested.new", ".", func(key string) any { return m[key] }) diff --git a/common/maps/scratch.go b/common/maps/scratch.go index 26ffef7d2..d4745d27c 100644 --- a/common/maps/scratch.go +++ b/common/maps/scratch.go @@ -24,7 +24,7 @@ import ( // Scratch is a writable context used for stateful operations in Page/Node rendering. type Scratch struct { - values map[string]interface{} + values map[string]any mu sync.RWMutex } @@ -50,8 +50,8 @@ func NewScratcher() Scratcher { // Supports numeric values and strings. // // If the first add for a key is an array or slice, then the next value(s) will be appended. -func (c *Scratch) Add(key string, newAddend interface{}) (string, error) { - var newVal interface{} +func (c *Scratch) Add(key string, newAddend any) (string, error) { + var newVal any c.mu.RLock() existingAddend, found := c.values[key] c.mu.RUnlock() @@ -82,7 +82,7 @@ func (c *Scratch) Add(key string, newAddend interface{}) (string, error) { // Set stores a value with the given key in the Node context. // This value can later be retrieved with Get. -func (c *Scratch) Set(key string, value interface{}) string { +func (c *Scratch) Set(key string, value any) string { c.mu.Lock() c.values[key] = value c.mu.Unlock() @@ -98,7 +98,7 @@ func (c *Scratch) Delete(key string) string { } // Get returns a value previously set by Add or Set. -func (c *Scratch) Get(key string) interface{} { +func (c *Scratch) Get(key string) any { c.mu.RLock() val := c.values[key] c.mu.RUnlock() @@ -109,7 +109,7 @@ func (c *Scratch) Get(key string) interface{} { // 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{} { +func (c *Scratch) Values() map[string]any { c.mu.RLock() defer c.mu.RUnlock() return c.values @@ -117,14 +117,14 @@ func (c *Scratch) Values() map[string]interface{} { // 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 { +func (c *Scratch) SetInMap(key string, mapKey string, value any) string { c.mu.Lock() _, found := c.values[key] if !found { - c.values[key] = make(map[string]interface{}) + c.values[key] = make(map[string]any) } - c.values[key].(map[string]interface{})[mapKey] = value + c.values[key].(map[string]any)[mapKey] = value c.mu.Unlock() return "" } @@ -134,14 +134,14 @@ func (c *Scratch) DeleteInMap(key string, mapKey string) string { c.mu.Lock() _, found := c.values[key] if found { - delete(c.values[key].(map[string]interface{}), mapKey) + delete(c.values[key].(map[string]any), mapKey) } c.mu.Unlock() return "" } // GetSortedMapValues returns a sorted map previously filled with SetInMap. -func (c *Scratch) GetSortedMapValues(key string) interface{} { +func (c *Scratch) GetSortedMapValues(key string) any { c.mu.RLock() if c.values[key] == nil { @@ -149,7 +149,7 @@ func (c *Scratch) GetSortedMapValues(key string) interface{} { return nil } - unsortedMap := c.values[key].(map[string]interface{}) + unsortedMap := c.values[key].(map[string]any) c.mu.RUnlock() var keys []string for mapKey := range unsortedMap { @@ -158,7 +158,7 @@ func (c *Scratch) GetSortedMapValues(key string) interface{} { sort.Strings(keys) - sortedArray := make([]interface{}, len(unsortedMap)) + sortedArray := make([]any, len(unsortedMap)) for i, mapKey := range keys { sortedArray[i] = unsortedMap[mapKey] } @@ -168,5 +168,5 @@ func (c *Scratch) GetSortedMapValues(key string) interface{} { // NewScratch returns a new instance of Scratch. func NewScratch() *Scratch { - return &Scratch{values: make(map[string]interface{})} + return &Scratch{values: make(map[string]any)} } diff --git a/common/maps/scratch_test.go b/common/maps/scratch_test.go index 96b352572..b515adb1d 100644 --- a/common/maps/scratch_test.go +++ b/common/maps/scratch_test.go @@ -90,7 +90,7 @@ func TestScratchAddTypedSliceToInterfaceSlice(t *testing.T) { c := qt.New(t) scratch := NewScratch() - scratch.Set("slice", []interface{}{}) + scratch.Set("slice", []any{}) _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) @@ -107,7 +107,7 @@ func TestScratchAddDifferentTypedSliceToInterfaceSlice(t *testing.T) { _, err := scratch.Add("slice", []int{1, 2}) c.Assert(err, qt.IsNil) - c.Assert(scratch.Get("slice"), qt.DeepEquals, []interface{}{"foo", 1, 2}) + c.Assert(scratch.Get("slice"), qt.DeepEquals, []any{"foo", 1, 2}) } func TestScratchSet(t *testing.T) { @@ -185,7 +185,7 @@ func TestScratchSetInMap(t *testing.T) { scratch.SetInMap("key", "zyx", "Zyx") scratch.SetInMap("key", "abc", "Abc (updated)") scratch.SetInMap("key", "def", "Def") - c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []interface{}{0: "Abc (updated)", 1: "Def", 2: "Lux", 3: "Zyx"}) + c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []any{0: "Abc (updated)", 1: "Def", 2: "Lux", 3: "Zyx"}) } func TestScratchDeleteInMap(t *testing.T) { @@ -199,7 +199,7 @@ func TestScratchDeleteInMap(t *testing.T) { scratch.DeleteInMap("key", "abc") scratch.SetInMap("key", "def", "Def") scratch.DeleteInMap("key", "lmn") // Do nothing - c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []interface{}{0: "Def", 1: "Lux", 2: "Zyx"}) + c.Assert(scratch.GetSortedMapValues("key"), qt.DeepEquals, []any{0: "Def", 1: "Lux", 2: "Zyx"}) } func TestScratchGetSortedMapValues(t *testing.T) { diff --git a/common/math/math.go b/common/math/math.go index cd06379aa..d4e2c1148 100644 --- a/common/math/math.go +++ b/common/math/math.go @@ -20,7 +20,7 @@ import ( // DoArithmetic performs arithmetic operations (+,-,*,/) using reflection to // determine the type of the two terms. -func DoArithmetic(a, b interface{}, op rune) (interface{}, error) { +func DoArithmetic(a, b any, op rune) (any, error) { av := reflect.ValueOf(a) bv := reflect.ValueOf(b) var ai, bi int64 diff --git a/common/math/math_test.go b/common/math/math_test.go index a11701862..89e391ce0 100644 --- a/common/math/math_test.go +++ b/common/math/math_test.go @@ -24,10 +24,10 @@ func TestDoArithmetic(t *testing.T) { c := qt.New(t) for _, test := range []struct { - a interface{} - b interface{} + a any + b any op rune - expect interface{} + expect any }{ {3, 2, '+', int64(5)}, {3, 2, '-', int64(1)}, diff --git a/common/paths/path_test.go b/common/paths/path_test.go index d1917a359..2400f16ab 100644 --- a/common/paths/path_test.go +++ b/common/paths/path_test.go @@ -24,7 +24,7 @@ func TestGetRelativePath(t *testing.T) { tests := []struct { path string base string - expect interface{} + expect any }{ {filepath.FromSlash("/a/b"), filepath.FromSlash("/a"), filepath.FromSlash("b")}, {filepath.FromSlash("/a/b/c/"), filepath.FromSlash("/a"), filepath.FromSlash("b/c/")}, diff --git a/common/text/position.go b/common/text/position.go index 5dd64526a..34e856c5d 100644 --- a/common/text/position.go +++ b/common/text/position.go @@ -69,7 +69,7 @@ func createPositionStringFormatter(formatStr string) func(p Position) string { format := replacer.Replace(formatStr) f := func(pos Position) string { - args := make([]interface{}, len(identifiersFound)) + args := make([]any, len(identifiersFound)) for i, id := range identifiersFound { switch id { case ":file": diff --git a/common/text/transform.go b/common/text/transform.go index 66a67d8bc..b324b54c1 100644 --- a/common/text/transform.go +++ b/common/text/transform.go @@ -24,7 +24,7 @@ import ( ) var accentTransformerPool = &sync.Pool{ - New: func() interface{} { + New: func() any { return transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC) }, } diff --git a/common/types/convert.go b/common/types/convert.go index 0560eda0d..fbeab5b91 100644 --- a/common/types/convert.go +++ b/common/types/convert.go @@ -25,13 +25,13 @@ import ( // ToDuration converts v to time.Duration. // See ToDurationE if you need to handle errors. -func ToDuration(v interface{}) time.Duration { +func ToDuration(v any) time.Duration { d, _ := ToDurationE(v) return d } // ToDurationE converts v to time.Duration. -func ToDurationE(v interface{}) (time.Duration, error) { +func ToDurationE(v any) (time.Duration, error) { if n := cast.ToInt(v); n > 0 { return time.Duration(n) * time.Millisecond, nil } @@ -44,14 +44,14 @@ func ToDurationE(v interface{}) (time.Duration, error) { // ToStringSlicePreserveString is the same as ToStringSlicePreserveStringE, // but it never fails. -func ToStringSlicePreserveString(v interface{}) []string { +func ToStringSlicePreserveString(v any) []string { vv, _ := ToStringSlicePreserveStringE(v) return vv } // ToStringSlicePreserveStringE converts v to a string slice. // If v is a string, it will be wrapped in a string slice. -func ToStringSlicePreserveStringE(v interface{}) ([]string, error) { +func ToStringSlicePreserveStringE(v any) ([]string, error) { if v == nil { return nil, nil } @@ -86,7 +86,7 @@ func ToStringSlicePreserveStringE(v interface{}) ([]string, error) { // TypeToString converts v to a string if it's a valid string type. // Note that this will not try to convert numeric values etc., // use ToString for that. -func TypeToString(v interface{}) (string, bool) { +func TypeToString(v any) (string, bool) { switch s := v.(type) { case string: return s, true @@ -110,13 +110,13 @@ func TypeToString(v interface{}) (string, bool) { } // ToString converts v to a string. -func ToString(v interface{}) string { +func ToString(v any) string { s, _ := ToStringE(v) return s } // ToStringE converts v to a string. -func ToStringE(v interface{}) (string, error) { +func ToStringE(v any) (string, error) { if s, ok := TypeToString(v); ok { return s, nil } diff --git a/common/types/convert_test.go b/common/types/convert_test.go index 88b303604..215117441 100644 --- a/common/types/convert_test.go +++ b/common/types/convert_test.go @@ -26,7 +26,7 @@ func TestToStringSlicePreserveString(t *testing.T) { c.Assert(ToStringSlicePreserveString("Hugo"), qt.DeepEquals, []string{"Hugo"}) c.Assert(ToStringSlicePreserveString(qt.Commentf("Hugo")), qt.DeepEquals, []string{"Hugo"}) - c.Assert(ToStringSlicePreserveString([]interface{}{"A", "B"}), qt.DeepEquals, []string{"A", "B"}) + c.Assert(ToStringSlicePreserveString([]any{"A", "B"}), qt.DeepEquals, []string{"A", "B"}) c.Assert(ToStringSlicePreserveString([]int{1, 3}), qt.DeepEquals, []string{"1", "3"}) c.Assert(ToStringSlicePreserveString(nil), qt.IsNil) } diff --git a/common/types/types.go b/common/types/types.go index 4f9f02c8d..cee497bf4 100644 --- a/common/types/types.go +++ b/common/types/types.go @@ -29,8 +29,8 @@ type RLocker interface { // KeyValue is a interface{} tuple. type KeyValue struct { - Key interface{} - Value interface{} + Key any + Value any } // KeyValueStr is a string tuple. @@ -41,8 +41,8 @@ type KeyValueStr struct { // KeyValues holds an key and a slice of values. type KeyValues struct { - Key interface{} - Values []interface{} + Key any + Values []any } // KeyString returns the key as a string, an empty string if conversion fails. @@ -57,7 +57,7 @@ func (k KeyValues) String() string { // NewKeyValuesStrings takes a given key and slice of values and returns a new // KeyValues struct. func NewKeyValuesStrings(key string, values ...string) KeyValues { - iv := make([]interface{}, len(values)) + iv := make([]any, len(values)) for i := 0; i < len(values); i++ { iv[i] = values[i] } @@ -71,7 +71,7 @@ type Zeroer interface { } // IsNil reports whether v is nil. -func IsNil(v interface{}) bool { +func IsNil(v any) bool { if v == nil { return true } diff --git a/common/types/types_test.go b/common/types/types_test.go index 7c5cba659..6f13ae834 100644 --- a/common/types/types_test.go +++ b/common/types/types_test.go @@ -25,5 +25,5 @@ func TestKeyValues(t *testing.T) { kv := NewKeyValuesStrings("key", "a1", "a2") c.Assert(kv.KeyString(), qt.Equals, "key") - c.Assert(kv.Values, qt.DeepEquals, []interface{}{"a1", "a2"}) + c.Assert(kv.Values, qt.DeepEquals, []any{"a1", "a2"}) } diff --git a/common/urls/ref.go b/common/urls/ref.go index 71b00b71d..e5804a279 100644 --- a/common/urls/ref.go +++ b/common/urls/ref.go @@ -17,6 +17,6 @@ package urls // args must contain a path, but can also point to the target // language or output format. type RefLinker interface { - Ref(args map[string]interface{}) (string, error) - RelRef(args map[string]interface{}) (string, error) + Ref(args map[string]any) (string, error) + RelRef(args map[string]any) (string, error) } |