hugolib: Improve errors in /i18n handlling

See #5324
This commit is contained in:
Bjørn Erik Pedersen
2018-10-22 17:42:06 +02:00
parent 9f74dc2a52
commit 2bf686ee21
5 changed files with 64 additions and 20 deletions

View File

@@ -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 {