Ok ça avance

This commit is contained in:
Laurent Ulrich 2024-07-12 15:59:03 +02:00
parent b48f2dc7fe
commit d33fbd13f9
2 changed files with 32 additions and 9 deletions

View File

@ -47,12 +47,16 @@ func (p *CsvParser) Parse(line string) (map[string]string, error) {
indexMax := len(line) - 1 indexMax := len(line) - 1
for index, r := range line { for index, r := range line {
if index == indexMax { if index == indexMax {
fmt.Println("EOL")
if currentFieldIndex < len(p.fields) { if currentFieldIndex < len(p.fields) {
fmt.Println("start:", valueStart, "end:", index) //fmt.Println("start:", valueStart, "end:", index)
fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index]) //fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index])
if inEnclosedField && r == currentEncloserEnd {
ret[p.fields[currentFieldIndex]] = line[valueStart:index] ret[p.fields[currentFieldIndex]] = line[valueStart:index]
fmt.Println("Index is:", index) } else {
ret[p.fields[currentFieldIndex]] = line[valueStart : index+1]
}
//fmt.Println("Index is:", index)
} }
} }
if r == '\\' { if r == '\\' {
@ -64,10 +68,10 @@ func (p *CsvParser) Parse(line string) (map[string]string, error) {
} else if r == p.delimiter { } else if r == p.delimiter {
if currentFieldIndex < len(p.fields) { if currentFieldIndex < len(p.fields) {
fmt.Println("start:", valueStart, "end:", index) //fmt.Println("start:", valueStart, "end:", index)
fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index]) //fmt.Println("Found a field value for:", p.fields[currentFieldIndex], line[valueStart:index])
ret[p.fields[currentFieldIndex]] = line[valueStart:index] ret[p.fields[currentFieldIndex]] = line[valueStart:index]
fmt.Println("Index is:", index) //fmt.Println("Index is:", index)
valueStart = index + 1 valueStart = index + 1
} }
currentFieldIndex++ currentFieldIndex++

View File

@ -15,13 +15,15 @@ func TestCorrectLines(t *testing.T) {
t.Fatalf("Parsing of empty line failed %v %v", err, event) t.Fatalf("Parsing of empty line failed %v %v", err, event)
} }
fmt.Println("event is", event) fmt.Println("event is", event)
line = "John Doe \"John Doe\""
line = "John"
fmt.Println("parsing:", line) fmt.Println("parsing:", line)
event, err = csvParser.Parse(line) event, err = csvParser.Parse(line)
if err != nil { if err != nil {
t.Fatalf("Parsing of empty line failed %v %v", err, event) t.Fatalf("Parsing of empty line failed %v %v", err, event)
} }
fmt.Println("event is", event) fmt.Println("event is", event)
line = "John Doe" line = "John Doe"
fmt.Println("parsing:", line) fmt.Println("parsing:", line)
event, err = csvParser.Parse(line) event, err = csvParser.Parse(line)
@ -29,6 +31,23 @@ func TestCorrectLines(t *testing.T) {
t.Fatalf("Parsing of empty line failed %v %v", err, event) t.Fatalf("Parsing of empty line failed %v %v", err, event)
} }
fmt.Println("event is", event) fmt.Println("event is", event)
line = "John \"John Doe\" Doe"
fmt.Println("parsing:", line)
event, err = csvParser.Parse(line)
if err != nil {
t.Fatalf("Parsing of empty line failed %v %v", err, event)
}
fmt.Println("event is", event)
line = "John Doe \"John Doe\""
fmt.Println("parsing:", line)
event, err = csvParser.Parse(line)
if err != nil {
t.Fatalf("Parsing of empty line failed %v %v", err, event)
}
fmt.Println("event is", event)
line = "John Doe I don't know him" line = "John Doe I don't know him"
fmt.Println("parsing:", line) fmt.Println("parsing:", line)
event, err = csvParser.Parse(line) event, err = csvParser.Parse(line)