diff --git a/.gitignore b/.gitignore deleted file mode 100644 index b2aeb9142..000000000 --- a/.gitignore +++ /dev/null @@ -1,29 +0,0 @@ -/hugo -docs/public* -/.idea -.vscode/* -hugo.exe -*.test -*.prof -nohup.out -cover.out -*.swp -*.swo -.DS_Store -*~ -vendor/*/ -*.bench -*.debug -coverage*.out - -dock.sh - -GoBuilds -dist - -hugolib/hugo_stats.json -resources/sunset.jpg - -vendor - -.hugo_build.lock diff --git a/tpl/compare/compare.go b/tpl/compare/compare.go index 47f77cc99..2ef5aacfe 100644 --- a/tpl/compare/compare.go +++ b/tpl/compare/compare.go @@ -16,6 +16,7 @@ package compare import ( "fmt" + "math" "reflect" "strconv" "time" @@ -273,7 +274,8 @@ func (ns *Namespace) compareGetWithCollator(collator *langs.Collator, a any, b a case reflect.String: var err error left, err = strconv.ParseFloat(av.String(), 64) - if err != nil { + // Check if float is a special floating value and cast value as string. + if math.IsInf(left, 0) || math.IsNaN(left) || err != nil { str := av.String() leftStr = &str } @@ -300,7 +302,8 @@ func (ns *Namespace) compareGetWithCollator(collator *langs.Collator, a any, b a case reflect.String: var err error right, err = strconv.ParseFloat(bv.String(), 64) - if err != nil { + // Check if float is a special floating value and cast value as string. + if math.IsInf(right, 0) || math.IsNaN(right) || err != nil { str := bv.String() rightStr = &str } diff --git a/tpl/compare/compare_test.go b/tpl/compare/compare_test.go index ce2016b38..4c50f5f0f 100644 --- a/tpl/compare/compare_test.go +++ b/tpl/compare/compare_test.go @@ -217,6 +217,8 @@ func doTestCompare(t *testing.T, tp tstCompareType, funcUnderTest func(a, b any) {"a", "a", 0}, {"a", "b", -1}, {"b", "a", 1}, + {"infinity", "infinity", 0}, + {"nan", "nan", 0}, {tstEqerType1("a"), tstEqerType1("a"), 0}, {tstEqerType1("a"), tstEqerType2("a"), 0}, {tstEqerType2("a"), tstEqerType1("a"), 0},