diff options
Diffstat (limited to 'internal/funcs/filepath.go')
| -rw-r--r-- | internal/funcs/filepath.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/internal/funcs/filepath.go b/internal/funcs/filepath.go new file mode 100644 index 00000000..726a1d7c --- /dev/null +++ b/internal/funcs/filepath.go @@ -0,0 +1,100 @@ +package funcs + +import ( + "context" + "path/filepath" + + "github.com/hairyhenderson/gomplate/v4/conv" +) + +// FilePathNS - the Path namespace +// +// Deprecated: don't use +func FilePathNS() *FilePathFuncs { + return &FilePathFuncs{} +} + +// AddFilePathFuncs - +// +// Deprecated: use [CreateFilePathFuncs] instead +func AddFilePathFuncs(f map[string]interface{}) { + for k, v := range CreateFilePathFuncs(context.Background()) { + f[k] = v + } +} + +// CreateFilePathFuncs - +func CreateFilePathFuncs(ctx context.Context) map[string]interface{} { + ns := &FilePathFuncs{ctx} + + return map[string]interface{}{ + "filepath": func() interface{} { return ns }, + } +} + +// FilePathFuncs - +type FilePathFuncs struct { + ctx context.Context +} + +// Base - +func (f *FilePathFuncs) Base(in interface{}) string { + return filepath.Base(conv.ToString(in)) +} + +// Clean - +func (f *FilePathFuncs) Clean(in interface{}) string { + return filepath.Clean(conv.ToString(in)) +} + +// Dir - +func (f *FilePathFuncs) Dir(in interface{}) string { + return filepath.Dir(conv.ToString(in)) +} + +// Ext - +func (f *FilePathFuncs) Ext(in interface{}) string { + return filepath.Ext(conv.ToString(in)) +} + +// FromSlash - +func (f *FilePathFuncs) FromSlash(in interface{}) string { + return filepath.FromSlash(conv.ToString(in)) +} + +// IsAbs - +func (f *FilePathFuncs) IsAbs(in interface{}) bool { + return filepath.IsAbs(conv.ToString(in)) +} + +// Join - +func (f *FilePathFuncs) Join(elem ...interface{}) string { + s := conv.ToStrings(elem...) + return filepath.Join(s...) +} + +// Match - +func (f *FilePathFuncs) Match(pattern, name interface{}) (matched bool, err error) { + return filepath.Match(conv.ToString(pattern), conv.ToString(name)) +} + +// Rel - +func (f *FilePathFuncs) Rel(basepath, targpath interface{}) (string, error) { + return filepath.Rel(conv.ToString(basepath), conv.ToString(targpath)) +} + +// Split - +func (f *FilePathFuncs) Split(in interface{}) []string { + dir, file := filepath.Split(conv.ToString(in)) + return []string{dir, file} +} + +// ToSlash - +func (f *FilePathFuncs) ToSlash(in interface{}) string { + return filepath.ToSlash(conv.ToString(in)) +} + +// VolumeName - +func (f *FilePathFuncs) VolumeName(in interface{}) string { + return filepath.VolumeName(conv.ToString(in)) +} |
