summaryrefslogtreecommitdiff
path: root/internal/funcs/path.go
diff options
context:
space:
mode:
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}
+}