From ebb97fb7367fb983cffc1935a8fb57e4b80f5249 Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Thu, 25 Jan 2024 20:11:31 -0500 Subject: Move funcs package to internal (#1977) Signed-off-by: Dave Henderson --- internal/funcs/path.go | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 internal/funcs/path.go (limited to 'internal/funcs/path.go') 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} +} -- cgit v1.2.3