ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Multiple letters
@ 2009-05-10 12:32 Otared Kavian
  2009-05-10 13:01 ` Wolfgang Schuster
  0 siblings, 1 reply; 3+ messages in thread
From: Otared Kavian @ 2009-05-10 12:32 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Hi all,

I have to write a letter to a few dozens candidates in which some  
parts are not identical. I may have the list of the persons, and the  
changing part for each of them in a file (named for instance "list-of- 
candidates.tex") on which each line corresponds to one person and the  
fields are sperated by commas (or any other suitable character). What  
would be the best way of coding this in ConTeXt?

Here is the example I have in mind:

%%% begin the body of the letter

Dear \MmeOrSir\ \FirstName\ \FamilyName,

We have received your application and we thank you for your interest  
in our institution.
\AnswerToApplication.

With our best regards, etc…

%%% end the body of the letter

The four commands \MmeOrSir, \FirstName, \FamilyName,  
\AnswerToApplication should correspond to the columns 1 through 4 of  
each line of the file
"list-of-candidates.tex" as follows:

%%% begin list-of-candidates.tex
Madam  , Joan , of Arc , {You will be interviewed very soon}
Mr , Groucho , Marx , {We are sorry, but this position is only for non  
smoking candidates}

\endinput
%%% end list-of-candidates.tex

Thank you for help: OK
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Multiple letters
  2009-05-10 12:32 Multiple letters Otared Kavian
@ 2009-05-10 13:01 ` Wolfgang Schuster
  2009-05-10 13:29   ` Otared Kavian
  0 siblings, 1 reply; 3+ messages in thread
From: Wolfgang Schuster @ 2009-05-10 13:01 UTC (permalink / raw)
  To: mailing list for ConTeXt users


Am 10.05.2009 um 14:32 schrieb Otared Kavian:

> Hi all,
>
> I have to write a letter to a few dozens candidates in which some  
> parts are not identical. I may have the list of the persons, and the  
> changing part for each of them in a file (named for instance "list- 
> of-candidates.tex") on which each line corresponds to one person and  
> the fields are sperated by commas (or any other suitable character).  
> What would be the best way of coding this in ConTeXt?
>
> Here is the example I have in mind:
>
> %%% begin the body of the letter
>
> Dear \MmeOrSir\ \FirstName\ \FamilyName,
>
> We have received your application and we thank you for your interest  
> in our institution.
> \AnswerToApplication.
>
> With our best regards, etc…
>
> %%% end the body of the letter
>
> The four commands \MmeOrSir, \FirstName, \FamilyName,  
> \AnswerToApplication should correspond to the columns 1 through 4 of  
> each line of the file
> "list-of-candidates.tex" as follows:
>
> %%% begin list-of-candidates.tex
> Madam  , Joan , of Arc , {You will be interviewed very soon}
> Mr , Groucho , Marx , {We are sorry, but this position is only for  
> non smoking candidates}
>
> \endinput
> %%% end list-of-candidates.tex
>
> Thank you for help: OK

\unprotect

\definemessageconstant {filecontents}

\startmessages all library: filecontents
         title: filecontents
             1: Overwriting file --
             2: Writing file --
\stopmessages

\def\startfilecontents
   {\begingroup
    \protectbuffersfalse
    \dostartfilecontents}

\def\dostartfilecontents[#1]%
   {\doiffileexistselse{#1}
      {\showmessage\m!filecontents{1}{#1}}
      {\showmessage\m!filecontents{2}{#1}}%
    \beforesplitstring#1\at.\to\filename
    \aftersplitstring #1\at.\to\extension
    \let\f!temporaryextension\extension
    \dostartbuffer[\filename][startfilecontents][stopfilecontents]}

\def\stopfilecontents
   {\doifmode{mkiv}{\savebuffer[\filename]\ctxlua{file.copy("\jobname- 
\filename.tmp","\filename.\f!temporaryextension")}}%
    \endgroup}

\ifx\savebuffer\undefined \def\savebuffer[#1] 
{\ctxlua{buffers.save("#1")}} \fi

\protect

\startfilecontents[data.dat]
Madam, Joan, of Arc, {You will be interviewed very soon}
Mr, Groucho, Marx, {We are sorry, but this position is only for non  
smoking candidates}
\stopfilecontents

\usemodule[database,letter]

\define[4]\createletter
   {\startletter[opening={Dear #1 #2 #3,}]
    We have received your application and we thank you for your  
interest in our institution.\endgraf
    #4
    \stopletter}

\defineseparatedlist
   [LETTER]
   [command=\createletter,
    separator={,}]

\starttext
\processseparatedfile[LETTER][data.dat]
\stoptext

Wolfgang

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Multiple letters
  2009-05-10 13:01 ` Wolfgang Schuster
@ 2009-05-10 13:29   ` Otared Kavian
  0 siblings, 0 replies; 3+ messages in thread
From: Otared Kavian @ 2009-05-10 13:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users

Dear Wolfgang,

Many thanks! As usual you are clear and sharp…
Your code works and does exactly what I need… Moreover I learned from  
it several "clean" tricks in order to use the way one can write macros  
in ConTeXt.
I have just to understand different parts of the code in order to  
wikify it.

Best regards: OK

On 10 mai 09, at 15:01, Wolfgang Schuster wrote:

>
> Am 10.05.2009 um 14:32 schrieb Otared Kavian:
>
>> Hi all,
>>
>> I have to write a letter to a few dozens candidates in which some  
>> parts are not identical. I may have the list of the persons, and  
>> the changing part for each of them in a file (named for instance  
>> "list-of-candidates.tex") on which each line corresponds to one  
>> person and the fields are sperated by commas (or any other suitable  
>> character). What would be the best way of coding this in ConTeXt?
>>
>> Here is the example I have in mind:
>>
>> %%% begin the body of the letter
>>
>> Dear \MmeOrSir\ \FirstName\ \FamilyName,
>>
>> We have received your application and we thank you for your  
>> interest in our institution.
>> \AnswerToApplication.
>>
>> With our best regards, etc…
>>
>> %%% end the body of the letter
>>
>> The four commands \MmeOrSir, \FirstName, \FamilyName,  
>> \AnswerToApplication should correspond to the columns 1 through 4  
>> of each line of the file
>> "list-of-candidates.tex" as follows:
>>
>> %%% begin list-of-candidates.tex
>> Madam  , Joan , of Arc , {You will be interviewed very soon}
>> Mr , Groucho , Marx , {We are sorry, but this position is only for  
>> non smoking candidates}
>>
>> \endinput
>> %%% end list-of-candidates.tex
>>
>> Thank you for help: OK
>
> \unprotect
>
> \definemessageconstant {filecontents}
>
> \startmessages all library: filecontents
>        title: filecontents
>            1: Overwriting file --
>            2: Writing file --
> \stopmessages
>
> \def\startfilecontents
>  {\begingroup
>   \protectbuffersfalse
>   \dostartfilecontents}
>
> \def\dostartfilecontents[#1]%
>  {\doiffileexistselse{#1}
>     {\showmessage\m!filecontents{1}{#1}}
>     {\showmessage\m!filecontents{2}{#1}}%
>   \beforesplitstring#1\at.\to\filename
>   \aftersplitstring #1\at.\to\extension
>   \let\f!temporaryextension\extension
>   \dostartbuffer[\filename][startfilecontents][stopfilecontents]}
>
> \def\stopfilecontents
>  {\doifmode{mkiv}{\savebuffer[\filename]\ctxlua{file.copy("\jobname- 
> \filename.tmp","\filename.\f!temporaryextension")}}%
>   \endgroup}
>
> \ifx\savebuffer\undefined \def\savebuffer[#1] 
> {\ctxlua{buffers.save("#1")}} \fi
>
> \protect
>
> \startfilecontents[data.dat]
> Madam, Joan, of Arc, {You will be interviewed very soon}
> Mr, Groucho, Marx, {We are sorry, but this position is only for non  
> smoking candidates}
> \stopfilecontents
>
> \usemodule[database,letter]
>
> \define[4]\createletter
>  {\startletter[opening={Dear #1 #2 #3,}]
>   We have received your application and we thank you for your  
> interest in our institution.\endgraf
>   #4
>   \stopletter}
>
> \defineseparatedlist
>  [LETTER]
>  [command=\createletter,
>   separator={,}]
>
> \starttext
> \processseparatedfile[LETTER][data.dat]
> \stoptext
>
> Wolfgang
>
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an  
> entry to the Wiki!
>
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
> archive  : https://foundry.supelec.fr/projects/contextrev/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : https://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2009-05-10 13:29 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-05-10 12:32 Multiple letters Otared Kavian
2009-05-10 13:01 ` Wolfgang Schuster
2009-05-10 13:29   ` Otared Kavian

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).