Skip to content

Commit 9855ba8

Browse files
committed
Use text/template lib in render
1 parent e524c8b commit 9855ba8

File tree

4 files changed

+30
-18
lines changed

4 files changed

+30
-18
lines changed

data_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,15 @@ func localizeViVn(k string, params ParameterMap) (string, error) {
143143
if !ok {
144144
return "", fmt.Errorf("%w: '%s'", errKeyNotFound, k)
145145
}
146-
return processParams(s, params), nil
146+
return processTemplate(s, params)
147147
}
148148

149149
func localizeEnUs(k string, params ParameterMap) (string, error) {
150150
s, ok := mapLanguageEn[k]
151151
if !ok {
152152
return "", fmt.Errorf("%w: '%s'", errKeyNotFound, k)
153153
}
154-
return processParams(s, params), nil
154+
return processTemplate(s, params)
155155
}
156156

157157
func localizeFail(k string, params ParameterMap) (string, error) {

errors_render.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ func (r *SimpleRenderer) renderCommonError(err error, params ParameterMap) strin
250250

251251
func (r *SimpleRenderer) localizeKey(key string, params ParameterMap) (string, error) {
252252
if r.cfg.LocalizationFunc == nil {
253-
return processParams(key, params), nil
253+
return processTemplate(key, params)
254254
}
255255
msg, err := r.cfg.LocalizationFunc(key, params)
256256
if err != nil {
@@ -263,8 +263,9 @@ func (r *SimpleRenderer) localizeKey(key string, params ParameterMap) (string, e
263263

264264
func (r *SimpleRenderer) localizeKeySkipError(key string, params ParameterMap) string {
265265
s, err := r.localizeKey(key, params)
266-
if err != nil {
267-
s = key
266+
if err == nil || r.cfg.LocalizationFunc == nil {
267+
return s
268268
}
269-
return processParams(s, params)
269+
s, _ = processTemplate(key, params)
270+
return s
270271
}

errors_render_as_csv.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ func (r *CSVRenderer) renderCommonError(err error, params ParameterMap) string {
324324

325325
func (r *CSVRenderer) localizeKey(key string, params ParameterMap) (string, error) {
326326
if r.cfg.LocalizationFunc == nil {
327-
return processParams(key, params), nil
327+
return processTemplate(key, params)
328328
}
329329
msg, err := r.cfg.LocalizationFunc(key, params)
330330
if err != nil {
@@ -337,10 +337,11 @@ func (r *CSVRenderer) localizeKey(key string, params ParameterMap) (string, erro
337337

338338
func (r *CSVRenderer) localizeKeySkipError(key string, params ParameterMap) string {
339339
s, err := r.localizeKey(key, params)
340-
if err != nil {
341-
s = key
340+
if err == nil || r.cfg.LocalizationFunc == nil {
341+
return s
342342
}
343-
return processParams(s, params)
343+
s, _ = processTemplate(key, params)
344+
return s
344345
}
345346

346347
func (r *CSVRenderer) estimateCSVBuffer(data [][]string) int {

util.go

+18-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package csvlib
22

33
import (
4+
"bytes"
45
"fmt"
56
"strings"
7+
"text/template"
8+
9+
"github.com/hashicorp/go-multierror"
610
)
711

812
func validateHeader(header []string) error {
@@ -20,14 +24,20 @@ func validateHeader(header []string) error {
2024
return nil
2125
}
2226

23-
func processParams(s string, params ParameterMap) string {
24-
if len(params) == 0 {
25-
return s
27+
func processTemplate(templ string, params ParameterMap) (detail string, retErr error) {
28+
detail = templ
29+
t, err := template.New("error").Parse(detail)
30+
if err != nil {
31+
retErr = multierror.Append(retErr, err)
32+
return
2633
}
27-
for k, v := range params {
28-
key := "{{." + k + "}}"
29-
val := fmt.Sprintf("%v", v)
30-
s = strings.ReplaceAll(s, key, val)
34+
35+
buf := bytes.NewBuffer(make([]byte, 0, 100)) // nolint: gomnd
36+
err = t.Execute(buf, params)
37+
if err != nil {
38+
retErr = multierror.Append(retErr, err)
39+
} else {
40+
detail = buf.String()
3141
}
32-
return s
42+
return
3343
}

0 commit comments

Comments
 (0)