NeoCSVWriter: how to output an empty quoted field

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

NeoCSVWriter: how to output an empty quoted field

jtuchel
Hi,

I need to write a number of empty quoted fields in a CSV export. The
receiving application will complain about missing quotes for empty text
fields... (don't ask, I've done all the eye rolling for you already)

My frst attempt was:

writer addConstantField: '""'.


But this doesn't write the quotes - I really don't see why, but it's the
case.

Also, adding

writer addObjectField: [:a| '""'].


doesn't really work, because it will literally add the double quotes
between single quotes... (???)



Do I really have to implement some method that returns an empty String
on my business objects and use:

writer addQuotedField: #justAnEmptyString. ?

Am I missing some switch to enable quotes for empty quoted fields?

My version of NeoCSVWriter on VA Smalltalk is not actually a current one...



Joachim

And, btw: Happy Holidays to all of you and a Happy new Year!




--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1


Reply | Threaded
Open this post in threaded view
|

Re: NeoCSVWriter: how to output an empty quoted field

Sven Van Caekenberghe-2
Hi Joachim,

nil fields normally write as 'empty quoted fields':

String streamContents: [ :out | (NeoCSVWriter on: out) nextPut: #(nil nil nil) ].

 => '"","",""'

Is this not what you want/need ?

Sven

> On 22 Dec 2017, at 15:05, [hidden email] wrote:
>
> Hi,
>
> I need to write a number of empty quoted fields in a CSV export. The receiving application will complain about missing quotes for empty text fields... (don't ask, I've done all the eye rolling for you already)
>
> My frst attempt was:
>
> writer addConstantField: '""'.
>
>
> But this doesn't write the quotes - I really don't see why, but it's the case.
>
> Also, adding
>
> writer addObjectField: [:a| '""'].
>
>
> doesn't really work, because it will literally add the double quotes between single quotes... (???)
>
>
>
> Do I really have to implement some method that returns an empty String on my business objects and use:
>
> writer addQuotedField: #justAnEmptyString. ?
>
> Am I missing some switch to enable quotes for empty quoted fields?
>
> My version of NeoCSVWriter on VA Smalltalk is not actually a current one...
>
>
>
> Joachim
>
> And, btw: Happy Holidays to all of you and a Happy new Year!
>
>
>
>
> --
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel          mailto:[hidden email]
> Fliederweg 1                         http://www.objektfabrik.de
> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>
>


Reply | Threaded
Open this post in threaded view
|

Re: NeoCSVWriter: how to output an empty quoted field

jtuchel
Sven,

hmm. The fields I need to write are known not to be written with my
application, so I am lloking for a way to define a field as being an
empty quoted field at all times.
So for I've tried:

addConstantField: nil --> Exception
addObjectFied: [:a| ] --> empty field without quotes
addConstantField: '' --> empty field without quotes

So it seems I have to implement some method on my business object that
returns nil and map it to all the fields that need to be empty and quoted.


Joachim


Am 22.12.17 um 15:48 schrieb Sven Van Caekenberghe:

> Hi Joachim,
>
> nil fields normally write as 'empty quoted fields':
>
> String streamContents: [ :out | (NeoCSVWriter on: out) nextPut: #(nil nil nil) ].
>
>   => '"","",""'
>
> Is this not what you want/need ?
>
> Sven
>
>> On 22 Dec 2017, at 15:05, [hidden email] wrote:
>>
>> Hi,
>>
>> I need to write a number of empty quoted fields in a CSV export. The receiving application will complain about missing quotes for empty text fields... (don't ask, I've done all the eye rolling for you already)
>>
>> My frst attempt was:
>>
>> writer addConstantField: '""'.
>>
>>
>> But this doesn't write the quotes - I really don't see why, but it's the case.
>>
>> Also, adding
>>
>> writer addObjectField: [:a| '""'].
>>
>>
>> doesn't really work, because it will literally add the double quotes between single quotes... (???)
>>
>>
>>
>> Do I really have to implement some method that returns an empty String on my business objects and use:
>>
>> writer addQuotedField: #justAnEmptyString. ?
>>
>> Am I missing some switch to enable quotes for empty quoted fields?
>>
>> My version of NeoCSVWriter on VA Smalltalk is not actually a current one...
>>
>>
>>
>> Joachim
>>
>> And, btw: Happy Holidays to all of you and a Happy new Year!
>>
>>
>>
>>
>> --
>> -----------------------------------------------------------------------
>> Objektfabrik Joachim Tuchel          mailto:[hidden email]
>> Fliederweg 1                         http://www.objektfabrik.de
>> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
>> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>>
>>
>
>

--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel          mailto:[hidden email]
Fliederweg 1                         http://www.objektfabrik.de
D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1


Reply | Threaded
Open this post in threaded view
|

Re: NeoCSVWriter: how to output an empty quoted field

Sven Van Caekenberghe-2
Joachim,

It works for me:

String streamContents: [ :out |
  (NeoCSVWriter on: out)
     addField: #x; addConstantField: String empty; addField: #y;
     nextPutAll: { 1@2. 3@4 } ].
 => '"1","","2"
"3","","4"
'

What is the value of the instance variable #fieldWriter inside NeoCSVWriter ?

It should default to #writeQuotedField: (as set in #initialize).

If I am misinterpreting your intentions, please provide a small standalone executable example.

Sven

> On 24 Dec 2017, at 07:13, [hidden email] wrote:
>
> Sven,
>
> hmm. The fields I need to write are known not to be written with my application, so I am lloking for a way to define a field as being an empty quoted field at all times.
> So for I've tried:
>
> addConstantField: nil --> Exception
> addObjectFied: [:a| ] --> empty field without quotes
> addConstantField: '' --> empty field without quotes
>
> So it seems I have to implement some method on my business object that returns nil and map it to all the fields that need to be empty and quoted.
>
>
> Joachim
>
>
> Am 22.12.17 um 15:48 schrieb Sven Van Caekenberghe:
>> Hi Joachim,
>>
>> nil fields normally write as 'empty quoted fields':
>>
>> String streamContents: [ :out | (NeoCSVWriter on: out) nextPut: #(nil nil nil) ].
>>
>>  => '"","",""'
>>
>> Is this not what you want/need ?
>>
>> Sven
>>
>>> On 22 Dec 2017, at 15:05, [hidden email] wrote:
>>>
>>> Hi,
>>>
>>> I need to write a number of empty quoted fields in a CSV export. The receiving application will complain about missing quotes for empty text fields... (don't ask, I've done all the eye rolling for you already)
>>>
>>> My frst attempt was:
>>>
>>> writer addConstantField: '""'.
>>>
>>>
>>> But this doesn't write the quotes - I really don't see why, but it's the case.
>>>
>>> Also, adding
>>>
>>> writer addObjectField: [:a| '""'].
>>>
>>>
>>> doesn't really work, because it will literally add the double quotes between single quotes... (???)
>>>
>>>
>>>
>>> Do I really have to implement some method that returns an empty String on my business objects and use:
>>>
>>> writer addQuotedField: #justAnEmptyString. ?
>>>
>>> Am I missing some switch to enable quotes for empty quoted fields?
>>>
>>> My version of NeoCSVWriter on VA Smalltalk is not actually a current one...
>>>
>>>
>>>
>>> Joachim
>>>
>>> And, btw: Happy Holidays to all of you and a Happy new Year!
>>>
>>>
>>>
>>>
>>> --
>>> -----------------------------------------------------------------------
>>> Objektfabrik Joachim Tuchel          mailto:[hidden email]
>>> Fliederweg 1                         http://www.objektfabrik.de
>>> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
>>> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>>>
>>>
>>
>>
>
> --
> -----------------------------------------------------------------------
> Objektfabrik Joachim Tuchel          mailto:[hidden email]
> Fliederweg 1                         http://www.objektfabrik.de
> D-71640 Ludwigsburg                  http://joachimtuchel.wordpress.com
> Telefon: +49 7141 56 10 86 0         Fax: +49 7141 56 10 86 1
>
>