github.com/wuhuizuo/gomplate@v3.5.0+incompatible/funcs/path.go (about) 1 package funcs 2 3 import ( 4 "path" 5 "sync" 6 7 "github.com/hairyhenderson/gomplate/conv" 8 ) 9 10 var ( 11 pf *PathFuncs 12 pfInit sync.Once 13 ) 14 15 // PathNS - the Path namespace 16 func PathNS() *PathFuncs { 17 pfInit.Do(func() { pf = &PathFuncs{} }) 18 return pf 19 } 20 21 // AddPathFuncs - 22 func AddPathFuncs(f map[string]interface{}) { 23 f["path"] = PathNS 24 } 25 26 // PathFuncs - 27 type PathFuncs struct { 28 } 29 30 // Base - 31 func (f *PathFuncs) Base(in interface{}) string { 32 return path.Base(conv.ToString(in)) 33 } 34 35 // Clean - 36 func (f *PathFuncs) Clean(in interface{}) string { 37 return path.Clean(conv.ToString(in)) 38 } 39 40 // Dir - 41 func (f *PathFuncs) Dir(in interface{}) string { 42 return path.Dir(conv.ToString(in)) 43 } 44 45 // Ext - 46 func (f *PathFuncs) Ext(in interface{}) string { 47 return path.Ext(conv.ToString(in)) 48 } 49 50 // IsAbs - 51 func (f *PathFuncs) IsAbs(in interface{}) bool { 52 return path.IsAbs(conv.ToString(in)) 53 } 54 55 // Join - 56 func (f *PathFuncs) Join(elem ...interface{}) string { 57 s := conv.ToStrings(elem...) 58 return path.Join(s...) 59 } 60 61 // Match - 62 func (f *PathFuncs) Match(pattern, name interface{}) (matched bool, err error) { 63 return path.Match(conv.ToString(pattern), conv.ToString(name)) 64 } 65 66 // Split - 67 func (f *PathFuncs) Split(in interface{}) []string { 68 dir, file := path.Split(conv.ToString(in)) 69 return []string{dir, file} 70 }