gocarina / gocsv

The GoCSV package aims to provide easy CSV serialization and deserialization to the golang programming language
MIT License
1.95k stars 243 forks source link

feat!: use CSVWriter interface instead of csv.Writer in SafeCSVWriter #233

Open gfaugere opened 1 year ago

gfaugere commented 1 year ago

Using the interface instead of the encoding/csv.Writer allows users to use truly custom writers, or to add their own wrappers in the writer chain.

We have a use case where we want to transform our fields before writing, and allowing us to wrap the writer while keeping the lib provided SafeCSVWriter would be quite cool!

This is a breaking change as it changes the contract of type SafeCSVWriter (props from the csv.Writer can no longer be accessed from it), but I think it would be better to decouple these two? Let me know if you think there is any downside to this? I don't see any but I am quite new with Go

pikanezi commented 1 year ago

Hi, as I don't use this library I'm not sure if this breaking change will impact a lot of people or not, I would like some feedback from other users if you don't mind 🙂

ess commented 3 months ago

Howdy @gfaugere !

I was just about to create a fork to do exactly this. While you may have been relatively new to Go in January of last year, I'll go as far as to say that the only thing that would hold me back from merging this (if I had that capability) would be changes to the documentation and examples.

From a usability standpoint, I don't even see this as a breaking change, really. In my mind, it seems like modifying the delimiter that your CSV writer uses in-situ is a pretty bad idea from the jump, so this would truly make it a Safe CSVWriter :grin: