(text string)
| 1414 | } |
| 1415 | |
| 1416 | func splitMultipartIdentifier(text string) []string { |
| 1417 | var parts []string |
| 1418 | var buf strings.Builder |
| 1419 | var bracket, quote bool |
| 1420 | for _, r := range text { |
| 1421 | switch r { |
| 1422 | case '[': |
| 1423 | bracket = true |
| 1424 | case ']': |
| 1425 | bracket = false |
| 1426 | case '"': |
| 1427 | quote = !quote |
| 1428 | case '.': |
| 1429 | if !bracket && !quote { |
| 1430 | parts = append(parts, buf.String()) |
| 1431 | buf.Reset() |
| 1432 | continue |
| 1433 | } |
| 1434 | default: |
| 1435 | } |
| 1436 | buf.WriteRune(r) |
| 1437 | } |
| 1438 | if buf.Len() > 0 { |
| 1439 | parts = append(parts, buf.String()) |
| 1440 | } |
| 1441 | return parts |
| 1442 | } |
| 1443 | |
| 1444 | func splitTopLevelCSV(text string) []string { |
| 1445 | var parts []string |
no test coverage detected