summaryrefslogtreecommitdiffstats
path: root/tpl/path/path.go
diff options
context:
space:
mode:
Diffstat (limited to 'tpl/path/path.go')
-rw-r--r--tpl/path/path.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/tpl/path/path.go b/tpl/path/path.go
index d334dd906..378b97e03 100644
--- a/tpl/path/path.go
+++ b/tpl/path/path.go
@@ -18,6 +18,7 @@ import (
"fmt"
_path "path"
"path/filepath"
+ "strings"
"github.com/gohugoio/hugo/deps"
"github.com/spf13/cast"
@@ -94,6 +95,21 @@ func (ns *Namespace) Base(path any) (string, error) {
return _path.Base(spath), nil
}
+// BaseName returns the last element of path, removing the extension if present.
+// Trailing slashes are removed before extracting the last element.
+// If the path is empty, Base returns ".".
+// If the path consists entirely of slashes, Base returns "/".
+// The input path is passed into filepath.ToSlash converting any Windows slashes
+// to forward slashes.
+func (ns *Namespace) BaseName(path any) (string, error) {
+ spath, err := cast.ToStringE(path)
+ if err != nil {
+ return "", err
+ }
+ spath = filepath.ToSlash(spath)
+ return strings.TrimSuffix(_path.Base(spath), _path.Ext(spath)), nil
+}
+
// Split splits path immediately following the final slash,
// separating it into a directory and file name component.
// If there is no slash in path, Split returns an empty dir and