Open jpluscplusm opened 3 months ago
Taking the toy data from https://alpha.cuelang.org/docs/howto/use-encoding-csv-decode-to-access-data-stored-in-a-csv-file/, we could document this approach of validating data in CSV files with cue vet.
cue vet
Downsides:
exec cue vet file.cue text: good-1.csv good-2.csv -d '#CSV' ! exec cue vet file.cue text: good-1.csv good-2.csv bad.csv -d '#CSV' cmp stderr failure -- file.cue -- import ( "encoding/csv" "list" "strconv" ) #CSV: X={ string _contents: csv.Decode(X) _header: list.Take(_contents, 1) _data: list.Drop(_contents, 1) _data: [...#Data] } #Data: [#Id, #Name, #Location, #Species] #Id: string #Name: string & != "" #Location: string #Species: string #Id: X={"\(strconv.Atoi(X))"} -- good-1.csv -- Id,Name,Location,Species 1,Charlie,"Ripon, North Yorkshire",cat 2,Fred,San Francisco,cat 3,Greyfriars Bobby,Edinburgh,dog 4,Nemo,???,fish -- good-2.csv -- Id,Name,Location,Species 1,Fred,San Francisco,cat 2,Charlie,"Ripon, North Yorkshire",cat 3,Nemo,???,fish 4,Greyfriars Bobby,Edinburgh,dog -- bad.csv -- Id,Name,Location,Species 1,Nemo,???,fish a,Greyfriars Bobby,Edinburgh,dog b,Fred,San Francisco,cat 4,,"Ripon, North Yorkshire",cat -- failure -- _data.3.1: invalid value "" (out of bound !=""): ./file.cue:18:21 ./file.cue:9:13 ./file.cue:15:14 _data.1.0: invalid interpolation: error in call to strconv.Atoi: strconv.Atoi: parsing "a": invalid syntax: ./file.cue:22:9 ./file.cue:22:12 _data.2.0: invalid interpolation: error in call to strconv.Atoi: strconv.Atoi: parsing "b": invalid syntax: ./file.cue:22:9 ./file.cue:22:12
Taking the toy data from https://alpha.cuelang.org/docs/howto/use-encoding-csv-decode-to-access-data-stored-in-a-csv-file/, we could document this approach of validating data in CSV files with
cue vet
.Downsides:
cue vet
'ing structured data.