From b48f2dc7fe530a0604de229c9928b306c66e87e8 Mon Sep 17 00:00:00 2001 From: Laurent Ulrich Date: Thu, 11 Jul 2024 16:03:03 +0200 Subject: [PATCH] Ne fonctionne pas des masses --- csvparser.go | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/csvparser.go b/csvparser.go index 83293b4..d58f12d 100644 --- a/csvparser.go +++ b/csvparser.go @@ -44,22 +44,31 @@ func (p *CsvParser) Parse(line string) (map[string]string, error) { ret := make(map[string]string) valueStart := 0 - valueEnd := 0 + indexMax := len(line) - 1 for index, r := range line { + if index == indexMax { + fmt.Println("EOL") + if currentFieldIndex < len(p.fields) { + fmt.Println("start:", valueStart, "end:", index) + fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index]) + ret[p.fields[currentFieldIndex]] = line[valueStart:index] + fmt.Println("Index is:", index) + } + } if r == '\\' { escape = !escape } else if inEnclosedField { if r == currentEncloserEnd && !escape { - if currentFieldIndex < len(p.fields) { - ret[p.fields[currentFieldIndex]] = line[valueStart : valueEnd-valueStart] - } - currentFieldIndex++ inEnclosedField = false } } else if r == p.delimiter { - valueEnd = index + if currentFieldIndex < len(p.fields) { - ret[p.fields[currentFieldIndex]] = line[valueStart : valueEnd-valueStart] + fmt.Println("start:", valueStart, "end:", index) + fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index]) + ret[p.fields[currentFieldIndex]] = line[valueStart:index] + fmt.Println("Index is:", index) + valueStart = index + 1 } currentFieldIndex++ } else { @@ -69,6 +78,7 @@ func (p *CsvParser) Parse(line string) (map[string]string, error) { // opening encloser inEnclosedField = true currentEncloserEnd = runes[1] + valueStart++ break } }