summaryrefslogtreecommitdiff
path: root/internal/funcs/path.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2024-01-25 20:11:31 -0500
committerGitHub <noreply@github.com>2024-01-25 20:11:31 -0500
commitebb97fb7367fb983cffc1935a8fb57e4b80f5249 (patch)
tree43ef6cd01f629f60f59efe1e5b003f7c8e3a1257 /internal/funcs/path.go
parentf1d9158ea99abbe556251c1ff2fe970f3b460ee9 (diff)
Move funcs package to internal (#1977)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal/funcs/path.go')
-rw-r--r--internal/funcs/path.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/internal/funcs/path.go b/internal/funcs/path.go
new file mode 100644
index 00000000..324f188a
--- /dev/null
+++ b/internal/funcs/path.go
@@ -0,0 +1,79 @@
+package funcs
+
+import (
+ "context"
+ "path"
+
+ "github.com/hairyhenderson/gomplate/v4/conv"
+)
+
+// PathNS - the Path namespace
+//
+// Deprecated: don't use
+func PathNS() *PathFuncs {
+ return &PathFuncs{}
+}
+
+// AddPathFuncs -
+//
+// Deprecated: use [CreatePathFuncs] instead
+func AddPathFuncs(f map[string]interface{}) {
+ for k, v := range CreatePathFuncs(context.Background()) {
+ f[k] = v
+ }
+}
+
+// CreatePathFuncs -
+func CreatePathFuncs(ctx context.Context) map[string]interface{} {
+ ns := &PathFuncs{ctx}
+ return map[string]interface{}{
+ "path": func() interface{} { return ns },
+ }
+}
+
+// PathFuncs -
+type PathFuncs struct {
+ ctx context.Context
+}
+
+// Base -
+func (PathFuncs) Base(in interface{}) string {
+ return path.Base(conv.ToString(in))
+}
+
+// Clean -
+func (PathFuncs) Clean(in interface{}) string {
+ return path.Clean(conv.ToString(in))
+}
+
+// Dir -
+func (PathFuncs) Dir(in interface{}) string {
+ return path.Dir(conv.ToString(in))
+}
+
+// Ext -
+func (PathFuncs) Ext(in interface{}) string {
+ return path.Ext(conv.ToString(in))
+}
+
+// IsAbs -
+func (PathFuncs) IsAbs(in interface{}) bool {
+ return path.IsAbs(conv.ToString(in))
+}
+
+// Join -
+func (PathFuncs) Join(elem ...interface{}) string {
+ s := conv.ToStrings(elem...)
+ return path.Join(s...)
+}
+
+// Match -
+func (PathFuncs) Match(pattern, name interface{}) (matched bool, err error) {
+ return path.Match(conv.ToString(pattern), conv.ToString(name))
+}
+
+// Split -
+func (PathFuncs) Split(in interface{}) []string {
+ dir, file := path.Split(conv.ToString(in))
+ return []string{dir, file}
+}