diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2024-01-25 20:11:31 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-25 20:11:31 -0500 |
| commit | ebb97fb7367fb983cffc1935a8fb57e4b80f5249 (patch) | |
| tree | 43ef6cd01f629f60f59efe1e5b003f7c8e3a1257 /internal/funcs/data.go | |
| parent | f1d9158ea99abbe556251c1ff2fe970f3b460ee9 (diff) | |
Move funcs package to internal (#1977)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'internal/funcs/data.go')
| -rw-r--r-- | internal/funcs/data.go | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/internal/funcs/data.go b/internal/funcs/data.go new file mode 100644 index 00000000..32f5b2da --- /dev/null +++ b/internal/funcs/data.go @@ -0,0 +1,140 @@ +package funcs + +import ( + "context" + + "github.com/hairyhenderson/gomplate/v4/conv" + "github.com/hairyhenderson/gomplate/v4/data" + "github.com/hairyhenderson/gomplate/v4/internal/parsers" +) + +// DataNS - +// +// Deprecated: don't use +func DataNS() *DataFuncs { + return &DataFuncs{} +} + +// AddDataFuncs - +// +// Deprecated: use [CreateDataFuncs] instead +func AddDataFuncs(f map[string]interface{}, d *data.Data) { + for k, v := range CreateDataFuncs(context.Background(), d) { + f[k] = v + } +} + +// CreateDataFuncs - +// +//nolint:staticcheck +func CreateDataFuncs(ctx context.Context, d *data.Data) map[string]interface{} { + f := map[string]interface{}{} + f["datasource"] = d.Datasource + f["ds"] = d.Datasource + f["datasourceExists"] = d.DatasourceExists + f["datasourceReachable"] = d.DatasourceReachable + f["defineDatasource"] = d.DefineDatasource + f["include"] = d.Include + f["listDatasources"] = d.ListDatasources + + ns := &DataFuncs{ctx} + + f["data"] = func() interface{} { return ns } + + f["json"] = ns.JSON + f["jsonArray"] = ns.JSONArray + f["yaml"] = ns.YAML + f["yamlArray"] = ns.YAMLArray + f["toml"] = ns.TOML + f["csv"] = ns.CSV + f["csvByRow"] = ns.CSVByRow + f["csvByColumn"] = ns.CSVByColumn + f["cue"] = ns.CUE + f["toJSON"] = ns.ToJSON + f["toJSONPretty"] = ns.ToJSONPretty + f["toYAML"] = ns.ToYAML + f["toTOML"] = ns.ToTOML + f["toCSV"] = ns.ToCSV + f["toCUE"] = ns.ToCUE + return f +} + +// DataFuncs - +type DataFuncs struct { + ctx context.Context +} + +// JSON - +func (f *DataFuncs) JSON(in interface{}) (map[string]interface{}, error) { + return parsers.JSON(conv.ToString(in)) +} + +// JSONArray - +func (f *DataFuncs) JSONArray(in interface{}) ([]interface{}, error) { + return parsers.JSONArray(conv.ToString(in)) +} + +// YAML - +func (f *DataFuncs) YAML(in interface{}) (map[string]interface{}, error) { + return parsers.YAML(conv.ToString(in)) +} + +// YAMLArray - +func (f *DataFuncs) YAMLArray(in interface{}) ([]interface{}, error) { + return parsers.YAMLArray(conv.ToString(in)) +} + +// TOML - +func (f *DataFuncs) TOML(in interface{}) (interface{}, error) { + return parsers.TOML(conv.ToString(in)) +} + +// CSV - +func (f *DataFuncs) CSV(args ...string) ([][]string, error) { + return parsers.CSV(args...) +} + +// CSVByRow - +func (f *DataFuncs) CSVByRow(args ...string) (rows []map[string]string, err error) { + return parsers.CSVByRow(args...) +} + +// CSVByColumn - +func (f *DataFuncs) CSVByColumn(args ...string) (cols map[string][]string, err error) { + return parsers.CSVByColumn(args...) +} + +// CUE - +func (f *DataFuncs) CUE(in interface{}) (interface{}, error) { + return parsers.CUE(conv.ToString(in)) +} + +// ToCSV - +func (f *DataFuncs) ToCSV(args ...interface{}) (string, error) { + return parsers.ToCSV(args...) +} + +// ToCUE - +func (f *DataFuncs) ToCUE(in interface{}) (string, error) { + return parsers.ToCUE(in) +} + +// ToJSON - +func (f *DataFuncs) ToJSON(in interface{}) (string, error) { + return parsers.ToJSON(in) +} + +// ToJSONPretty - +func (f *DataFuncs) ToJSONPretty(indent string, in interface{}) (string, error) { + return parsers.ToJSONPretty(indent, in) +} + +// ToYAML - +func (f *DataFuncs) ToYAML(in interface{}) (string, error) { + return parsers.ToYAML(in) +} + +// ToTOML - +func (f *DataFuncs) ToTOML(in interface{}) (string, error) { + return parsers.ToTOML(in) +} |
