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 } }