On Fri, Nov 25, 2016 at 09:38:42PM +0100, Sven Van Caekenberghe wrote:
Peter,
On 25 Nov 2016, at 19:35, Peter Uhnak <i.uhnak@gmail.com> wrote:
Hi,
is it/would it be possible to modify NeoCSVWriter to add quotes only where necessary? So only if the written value contains the separator (is there any other case that would require the quotes?).
Thanks, Peter
Why exactly do you want this ?
My use case is that sometimes I need/want to view the file with my eyes, and when in 95% of the file the content is single (or couple words), then quotes add a lot of clutter. So if in 5% (or 1%) of the file there are quotes and the reset aren't, then I would be happy. :) But it's not such a big problem, I've added it for myself, at least until we will have a usable way to edit CSV files in Pharo... do we really not have any table editor? :/ Peter
CSV is a pretty simple format, having a field quoted in one line and not in another already sounds like being a bit too clever, though it does seem to be allowed.
The idea of having different field writers was to choose the most efficient one for your data (types). You can configure a writer per field (column). If you have numbers, raw gives you the fastest performance.
Doing optional quoting would always require more than one pass, if not many more, over the string, possibly generating more garbage. (Like in your example implementation).
There are 3 reasons to do quoting: embedded separator, embedded newline, embedded quote (you forgot the newline case).
All that being said, maybe an #optionalQuoted field writer could be a reasonable configureable option, but I would not make it the default.
Again, why do you want this ?
Sven