diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 17:42:06 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2018-10-22 20:46:14 +0200 |
commit | 2bf686ee217808186385bfcf6156f15bbdb33651 (patch) | |
tree | 6184e03782e693209828af09fef213d9a8309dcb /common | |
parent | 9f74dc2a52b6f568b5a060b7a4be47196804b01f (diff) |
hugolib: Improve errors in /i18n handlling
See #5324
Diffstat (limited to 'common')
-rw-r--r-- | common/herrors/file_error_test.go | 3 | ||||
-rw-r--r-- | common/herrors/line_number_extractors.go | 18 |
2 files changed, 13 insertions, 8 deletions
diff --git a/common/herrors/file_error_test.go b/common/herrors/file_error_test.go index 0d4e82f66..8b1674ba1 100644 --- a/common/herrors/file_error_test.go +++ b/common/herrors/file_error_test.go @@ -38,6 +38,7 @@ func TestToLineNumberError(t *testing.T) { {errors.New("parse failed: template: _default/bundle-resource-meta.html:11: unexpected in operand"), 0, 11, 1}, {errors.New(`failed:: template: _default/bundle-resource-meta.html:2:7: executing "main" at <.Titles>`), 0, 2, 7}, {errors.New("error in front matter: Near line 32 (last key parsed 'title')"), 0, 32, 1}, + {errors.New(`failed to load translations: (6, 7): was expecting token =, but got "g" instead`), 0, 6, 7}, } { got := ToFileErrorWithOffset("template", test.in, test.offset) @@ -46,7 +47,7 @@ func TestToLineNumberError(t *testing.T) { le, ok := got.(FileError) if test.lineNumber > 0 { - assert.True(ok) + assert.True(ok, errMsg) assert.Equal(test.lineNumber, le.LineNumber(), errMsg) assert.Equal(test.columnNumber, le.ColumnNumber(), errMsg) assert.Contains(got.Error(), strconv.Itoa(le.LineNumber())) diff --git a/common/herrors/line_number_extractors.go b/common/herrors/line_number_extractors.go index 8740afdf7..93969b967 100644 --- a/common/herrors/line_number_extractors.go +++ b/common/herrors/line_number_extractors.go @@ -20,13 +20,17 @@ import ( var lineNumberExtractors = []lineNumberExtractor{ // Template/shortcode parse errors - newLineNumberErrHandlerFromRegexp("(.*?:)(\\d+)(:)(\\d+)?(.*)"), + newLineNumberErrHandlerFromRegexp(".*:(\\d+):(\\d*):"), + newLineNumberErrHandlerFromRegexp(".*:(\\d+):"), // TOML parse errors - newLineNumberErrHandlerFromRegexp("(.*Near line )(\\d+)(\\s.*)"), + newLineNumberErrHandlerFromRegexp(".*Near line (\\d+)(\\s.*)"), // YAML parse errors - newLineNumberErrHandlerFromRegexp("(line )(\\d+)(:)"), + newLineNumberErrHandlerFromRegexp("line (\\d+):"), + + // i18n bundle errors + newLineNumberErrHandlerFromRegexp("\\((\\d+),\\s(\\d*)"), } type lineNumberExtractor func(e error) (int, int) @@ -44,10 +48,10 @@ func extractLineNo(re *regexp.Regexp) lineNumberExtractor { col := 1 s := e.Error() m := re.FindStringSubmatch(s) - if len(m) >= 4 { - lno, _ := strconv.Atoi(m[2]) - if len(m) > 4 { - col, _ = strconv.Atoi(m[4]) + if len(m) >= 2 { + lno, _ := strconv.Atoi(m[1]) + if len(m) > 2 { + col, _ = strconv.Atoi(m[2]) } if col <= 0 { |