github.com/wuhuizuo/gomplate@v3.5.0+incompatible/funcs/conv.go (about)

     1  package funcs
     2  
     3  import (
     4  	"net/url"
     5  	"sync"
     6  	"text/template"
     7  
     8  	"github.com/hairyhenderson/gomplate/coll"
     9  	"github.com/hairyhenderson/gomplate/conv"
    10  )
    11  
    12  var (
    13  	convNS     *ConvFuncs
    14  	convNSInit sync.Once
    15  )
    16  
    17  // ConvNS -
    18  func ConvNS() *ConvFuncs {
    19  	convNSInit.Do(func() { convNS = &ConvFuncs{} })
    20  	return convNS
    21  }
    22  
    23  // AddConvFuncs -
    24  func AddConvFuncs(f map[string]interface{}) {
    25  	f["conv"] = ConvNS
    26  
    27  	f["urlParse"] = ConvNS().URL
    28  	f["bool"] = ConvNS().Bool
    29  	f["join"] = ConvNS().Join
    30  	f["default"] = ConvNS().Default
    31  }
    32  
    33  // ConvFuncs -
    34  type ConvFuncs struct{}
    35  
    36  // Bool -
    37  func (f *ConvFuncs) Bool(s interface{}) bool {
    38  	return conv.Bool(conv.ToString(s))
    39  }
    40  
    41  // ToBool -
    42  func (f *ConvFuncs) ToBool(in interface{}) bool {
    43  	return conv.ToBool(in)
    44  }
    45  
    46  // ToBools -
    47  func (f *ConvFuncs) ToBools(in ...interface{}) []bool {
    48  	return conv.ToBools(in...)
    49  }
    50  
    51  // Slice -
    52  func (f *ConvFuncs) Slice(args ...interface{}) []interface{} {
    53  	return coll.Slice(args...)
    54  }
    55  
    56  // Join -
    57  func (f *ConvFuncs) Join(in interface{}, sep string) (string, error) {
    58  	return conv.Join(in, sep)
    59  }
    60  
    61  // Has -
    62  func (f *ConvFuncs) Has(in interface{}, key string) bool {
    63  	return coll.Has(in, key)
    64  }
    65  
    66  // ParseInt -
    67  func (f *ConvFuncs) ParseInt(s interface{}, base, bitSize int) int64 {
    68  	return conv.MustParseInt(conv.ToString(s), base, bitSize)
    69  }
    70  
    71  // ParseFloat -
    72  func (f *ConvFuncs) ParseFloat(s interface{}, bitSize int) float64 {
    73  	return conv.MustParseFloat(conv.ToString(s), bitSize)
    74  }
    75  
    76  // ParseUint -
    77  func (f *ConvFuncs) ParseUint(s interface{}, base, bitSize int) uint64 {
    78  	return conv.MustParseUint(conv.ToString(s), base, bitSize)
    79  }
    80  
    81  // Atoi -
    82  func (f *ConvFuncs) Atoi(s interface{}) int {
    83  	return conv.MustAtoi(conv.ToString(s))
    84  }
    85  
    86  // URL -
    87  func (f *ConvFuncs) URL(s interface{}) (*url.URL, error) {
    88  	return url.Parse(conv.ToString(s))
    89  }
    90  
    91  // ToInt64 -
    92  func (f *ConvFuncs) ToInt64(in interface{}) int64 {
    93  	return conv.ToInt64(in)
    94  }
    95  
    96  // ToInt -
    97  func (f *ConvFuncs) ToInt(in interface{}) int {
    98  	return conv.ToInt(in)
    99  }
   100  
   101  // ToInt64s -
   102  func (f *ConvFuncs) ToInt64s(in ...interface{}) []int64 {
   103  	return conv.ToInt64s(in...)
   104  }
   105  
   106  // ToInts -
   107  func (f *ConvFuncs) ToInts(in ...interface{}) []int {
   108  	return conv.ToInts(in...)
   109  }
   110  
   111  // ToFloat64 -
   112  func (f *ConvFuncs) ToFloat64(in interface{}) float64 {
   113  	return conv.ToFloat64(in)
   114  }
   115  
   116  // ToFloat64s -
   117  func (f *ConvFuncs) ToFloat64s(in ...interface{}) []float64 {
   118  	return conv.ToFloat64s(in...)
   119  }
   120  
   121  // ToString -
   122  func (f *ConvFuncs) ToString(in interface{}) string {
   123  	return conv.ToString(in)
   124  }
   125  
   126  // ToStrings -
   127  func (f *ConvFuncs) ToStrings(in ...interface{}) []string {
   128  	return conv.ToStrings(in...)
   129  }
   130  
   131  // Default -
   132  func (f *ConvFuncs) Default(def, in interface{}) interface{} {
   133  	if truth, ok := template.IsTrue(in); truth && ok {
   134  		return in
   135  	}
   136  	return def
   137  }
   138  
   139  // Dict -
   140  func (f *ConvFuncs) Dict(in ...interface{}) (map[string]interface{}, error) {
   141  	return coll.Dict(in...)
   142  }