Implement value formatters on fields

This commit is contained in:
Denis Arh
2020-11-30 20:31:02 +01:00
parent cf7b31cbc0
commit d2142d6448
2 changed files with 22 additions and 7 deletions
+19 -6
View File
@@ -18,6 +18,10 @@ func Formatter() *formatter {
}
func (f formatter) Run(m *types.Module, vv types.RecordValueSet) types.RecordValueSet {
var (
exprParser = parser()
)
for _, v := range vv {
fld := m.Fields.FindByName(v.Name)
if fld == nil {
@@ -27,12 +31,21 @@ func (f formatter) Run(m *types.Module, vv types.RecordValueSet) types.RecordVal
continue
}
// Per field type validators
switch strings.ToLower(fld.Kind) {
case "bool":
v = f.fBool(v)
case "datetime":
v = f.fDatetime(v, fld)
if !(fld.Expressions.DisableDefaultFormatters && len(fld.Expressions.Formatters) > 0) {
// Per field type validators
switch strings.ToLower(fld.Kind) {
case "bool":
v = f.fBool(v)
case "datetime":
v = f.fDatetime(v, fld)
}
}
if len(fld.Expressions.Formatters) > 0 {
for _, expr := range fld.Expressions.Formatters {
rval, _ := exprParser.Evaluate(expr, map[string]interface{}{"value": v.Value})
v.Value = sanitize(fld, rval)
}
}
}
+3 -1
View File
@@ -49,7 +49,9 @@ type (
// Test string `json:"test,omitempty"`
// Error string `json:"error,omitempty"`
//} `json:"validators,omitempty"`
//Formatters []string `json:"formatters,omitempty"`
Formatters []string `json:"formatters,omitempty"`
DisableDefaultFormatters bool `json:"disableDefaultFormatters,omitempty"`
}
)