github.com/hairyhenderson/gomplate/v3@v3.11.7/funcs/path.go (about)

     1  package funcs
     2  
     3  import (
     4  	"context"
     5  	"path"
     6  
     7  	"github.com/hairyhenderson/gomplate/v3/conv"
     8  )
     9  
    10  // PathNS - the Path namespace
    11  // Deprecated: don't use
    12  func PathNS() *PathFuncs {
    13  	return &PathFuncs{}
    14  }
    15  
    16  // AddPathFuncs -
    17  // Deprecated: use CreatePathFuncs instead
    18  func AddPathFuncs(f map[string]interface{}) {
    19  	for k, v := range CreatePathFuncs(context.Background()) {
    20  		f[k] = v
    21  	}
    22  }
    23  
    24  // CreatePathFuncs -
    25  func CreatePathFuncs(ctx context.Context) map[string]interface{} {
    26  	ns := &PathFuncs{ctx}
    27  	return map[string]interface{}{
    28  		"path": func() interface{} { return ns },
    29  	}
    30  }
    31  
    32  // PathFuncs -
    33  type PathFuncs struct {
    34  	ctx context.Context
    35  }
    36  
    37  // Base -
    38  func (PathFuncs) Base(in interface{}) string {
    39  	return path.Base(conv.ToString(in))
    40  }
    41  
    42  // Clean -
    43  func (PathFuncs) Clean(in interface{}) string {
    44  	return path.Clean(conv.ToString(in))
    45  }
    46  
    47  // Dir -
    48  func (PathFuncs) Dir(in interface{}) string {
    49  	return path.Dir(conv.ToString(in))
    50  }
    51  
    52  // Ext -
    53  func (PathFuncs) Ext(in interface{}) string {
    54  	return path.Ext(conv.ToString(in))
    55  }
    56  
    57  // IsAbs -
    58  func (PathFuncs) IsAbs(in interface{}) bool {
    59  	return path.IsAbs(conv.ToString(in))
    60  }
    61  
    62  // Join -
    63  func (PathFuncs) Join(elem ...interface{}) string {
    64  	s := conv.ToStrings(elem...)
    65  	return path.Join(s...)
    66  }
    67  
    68  // Match -
    69  func (PathFuncs) Match(pattern, name interface{}) (matched bool, err error) {
    70  	return path.Match(conv.ToString(pattern), conv.ToString(name))
    71  }
    72  
    73  // Split -
    74  func (PathFuncs) Split(in interface{}) []string {
    75  	dir, file := path.Split(conv.ToString(in))
    76  	return []string{dir, file}
    77  }