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

     1  package funcs
     2  
     3  import (
     4  	"sync"
     5  
     6  	"github.com/hairyhenderson/gomplate/conv"
     7  	"github.com/hairyhenderson/gomplate/data"
     8  )
     9  
    10  var (
    11  	dataNS     *DataFuncs
    12  	dataNSInit sync.Once
    13  )
    14  
    15  // DataNS -
    16  func DataNS() *DataFuncs {
    17  	dataNSInit.Do(func() { dataNS = &DataFuncs{} })
    18  	return dataNS
    19  }
    20  
    21  // AddDataFuncs -
    22  func AddDataFuncs(f map[string]interface{}, d *data.Data) {
    23  	f["datasource"] = d.Datasource
    24  	f["ds"] = d.Datasource
    25  	f["datasourceExists"] = d.DatasourceExists
    26  	f["datasourceReachable"] = d.DatasourceReachable
    27  	f["defineDatasource"] = d.DefineDatasource
    28  	f["include"] = d.Include
    29  
    30  	f["data"] = DataNS
    31  
    32  	f["json"] = DataNS().JSON
    33  	f["jsonArray"] = DataNS().JSONArray
    34  	f["yaml"] = DataNS().YAML
    35  	f["yamlArray"] = DataNS().YAMLArray
    36  	f["toml"] = DataNS().TOML
    37  	f["csv"] = DataNS().CSV
    38  	f["csvByRow"] = DataNS().CSVByRow
    39  	f["csvByColumn"] = DataNS().CSVByColumn
    40  	f["toJSON"] = DataNS().ToJSON
    41  	f["toJSONPretty"] = DataNS().ToJSONPretty
    42  	f["toYAML"] = DataNS().ToYAML
    43  	f["toTOML"] = DataNS().ToTOML
    44  	f["toCSV"] = DataNS().ToCSV
    45  }
    46  
    47  // DataFuncs -
    48  type DataFuncs struct{}
    49  
    50  // JSON -
    51  func (f *DataFuncs) JSON(in interface{}) (map[string]interface{}, error) {
    52  	return data.JSON(conv.ToString(in))
    53  }
    54  
    55  // JSONArray -
    56  func (f *DataFuncs) JSONArray(in interface{}) ([]interface{}, error) {
    57  	return data.JSONArray(conv.ToString(in))
    58  }
    59  
    60  // YAML -
    61  func (f *DataFuncs) YAML(in interface{}) (map[string]interface{}, error) {
    62  	return data.YAML(conv.ToString(in))
    63  }
    64  
    65  // YAMLArray -
    66  func (f *DataFuncs) YAMLArray(in interface{}) ([]interface{}, error) {
    67  	return data.YAMLArray(conv.ToString(in))
    68  }
    69  
    70  // TOML -
    71  func (f *DataFuncs) TOML(in interface{}) (interface{}, error) {
    72  	return data.TOML(conv.ToString(in))
    73  }
    74  
    75  // CSV -
    76  func (f *DataFuncs) CSV(args ...string) ([][]string, error) {
    77  	return data.CSV(args...)
    78  }
    79  
    80  // CSVByRow -
    81  func (f *DataFuncs) CSVByRow(args ...string) (rows []map[string]string, err error) {
    82  	return data.CSVByRow(args...)
    83  }
    84  
    85  // CSVByColumn -
    86  func (f *DataFuncs) CSVByColumn(args ...string) (cols map[string][]string, err error) {
    87  	return data.CSVByColumn(args...)
    88  }
    89  
    90  // ToCSV -
    91  func (f *DataFuncs) ToCSV(args ...interface{}) (string, error) {
    92  	return data.ToCSV(args...)
    93  }
    94  
    95  // ToJSON -
    96  func (f *DataFuncs) ToJSON(in interface{}) (string, error) {
    97  	return data.ToJSON(in)
    98  }
    99  
   100  // ToJSONPretty -
   101  func (f *DataFuncs) ToJSONPretty(indent string, in interface{}) (string, error) {
   102  	return data.ToJSONPretty(indent, in)
   103  }
   104  
   105  // ToYAML -
   106  func (f *DataFuncs) ToYAML(in interface{}) (string, error) {
   107  	return data.ToYAML(in)
   108  }
   109  
   110  // ToTOML -
   111  func (f *DataFuncs) ToTOML(in interface{}) (string, error) {
   112  	return data.ToTOML(in)
   113  }