URI: 
       tpl: Fix substr when length parameter is zero - hugo - [fork] hugo port for 9front
  HTML git clone git@git.drkhsh.at/hugo.git
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
   DIR README
   DIR LICENSE
       ---
   DIR commit 5862fd2a60b5d16f2437bd8c8b7bac700de5f047
   DIR parent 64789fb5dcf8326f14f13d69a2576ae3aa2bbbaa
  HTML Author: Cameron Moore <moorereason@gmail.com>
       Date:   Sat, 28 Nov 2020 09:56:49 -0600
       
       tpl: Fix substr when length parameter is zero
       
       When length parameter is zero, always return an empty string.
       
       Updates #7993
       
       Diffstat:
         M tpl/strings/strings.go              |       7 +++++--
         M tpl/strings/strings_test.go         |       5 ++++-
       
       2 files changed, 9 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/tpl/strings/strings.go b/tpl/strings/strings.go
       @@ -327,9 +327,12 @@ func (ns *Namespace) Substr(a interface{}, nums ...interface{}) (string, error) 
        
                end := rlen
        
       -        if length < 0 {
       +        switch {
       +        case length == 0:
       +                return "", nil
       +        case length < 0:
                        end += length
       -        } else if length > 0 {
       +        case length > 0:
                        end = start + length
                }
        
   DIR diff --git a/tpl/strings/strings_test.go b/tpl/strings/strings_test.go
       @@ -441,6 +441,9 @@ func TestSubstr(t *testing.T) {
                }{
                        {"abc", 1, 2, "bc"},
                        {"abc", 0, 1, "a"},
       +                {"abcdef", 0, 0, ""},
       +                {"abcdef", 1, 0, ""},
       +                {"abcdef", -1, 0, ""},
                        {"abcdef", -1, 2, "f"},
                        {"abcdef", -3, 3, "def"},
                        {"abcdef", -1, nil, "f"},
       @@ -488,7 +491,7 @@ func TestSubstr(t *testing.T) {
                        }
        
                        c.Assert(err, qt.IsNil)
       -                c.Assert(result, qt.Equals, test.expect, qt.Commentf("%v", test))
       +                c.Check(result, qt.Equals, test.expect, qt.Commentf("%v", test))
                }
        
                _, err = ns.Substr("abcdef")