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 }