func processCSV()

in cmd/wfnconvert/wfnconvert.go [178:210]


func processCSV(ctx context.Context, o *options, in <-chan []string, out chan<- []string) func() error {
	return func() error {
		var (
			ss   []string
			more bool
		)
		for {
			select {
			case ss, more = <-in:
				if !more {
					return nil
				}
			case <-ctx.Done():
				return ctx.Err()
			}
			for _, n := range o.csvFields {
				if n >= len(ss) {
					continue
				}
				s, err := process(ss[n], o)
				if err != nil {
					return fmt.Errorf("could not process %q: %v", ss[n], err)
				}
				ss[n] = s
			}
			select {
			case out <- ss:
			case <-ctx.Done():
				return ctx.Err()
			}
		}
	}
}