From: Jaroslav Hajtmar <hajtmar@gyza.cz>
To: ntg-context@ntg.nl
Subject: Re: issue with t-scancsv.lua
Date: Tue, 09 Dec 2014 00:45:03 +0100 [thread overview]
Message-ID: <548637FF.4000600@gyza.cz> (raw)
In-Reply-To: <5485D021.7040604@gmx.es>
Hi Pablo.
I am glad that my library for you to use ...
I noticed that you have in your CSV file header with column names (ie.
head of CSV document). I do not know if you noticed the option put this
information into scancsv.lua library. This is done via the command
\setheader. In this case library does not consider the first line of the
CSV file as a data line. From the header of CSV file are now macros
(from header names) contain later data from rows of the CSV file
(changing in cycle). In addition, you can also use internal hooks. CSV
file can even contain macros (must be defined before processing the CSV
file).
I greet you.
Jaroslav Hajtmar
Example of use hooks etc. eg. Here:
\usemodule[scancsv]
\setuppapersize[C6, landscape]
\setuppagenumbering[location=]
% Structure of CSV file - you can use macros in CSV table too
% name;address;postcode;city;linecolor
% ME;STREET;0000;HERE;\green;
% You;Square;9999;There;\red;
% we;another Square;111;anyplace;\blue;
% Library is making \name, \address, \postcode, \city and \linecolor macros
% when you using \setheader command.
% Your example:
\unexpanded\def\lineaction{
\edef\lowercasename{\lowercase{\name}}
\edef\uppercaseaddress{\uppercase{\address}}
name: {\linecolor\name}\ -- lowercase name: \lowercasename\crlf
address: \address\ -- upercase address: \uppercaseaddress\crlf
\postcode\ \city\crlf
\page
}
% My example with hooks:
\unexpanded\def\tablelineaction{%
\edef\ehname{\hname}%
\edef\ehaddress{\haddress}%
\edef\ehpostcode{\hpostcode}%
\edef\ehcity{\hcity}%
\ehname \ehaddress \ehpostcode \ehcity %
}
% My simple example with hooks:
\def\simpletablelineaction{%
\bTD{\linecolor\numline}\eTD\hname\haddress\hpostcode\hcity%
}
\setsep{;} % set separator
\setheader % set information about header
\setfiletoscan{mailmergedatatable.csv}
\starttext
% process all file
Here is begin of processing...
\filelineaction
And here is end....
\page
And now we can use internal hooks:
\def\bch{\bTD } % begin column hook
\def\ech{\eTD} % end column hook
\def\blinehook{\bTR } % begin line hook
\def\elinehook{\eTR} % end line hook
\def\bfilehook{\bTABLE } % begin CSV file hook
\def\efilehook{\eTABLE} % end CSV file hook
Here is begin of processing...
%process all file too (endless cycle)
\doloopif{1}{==}{1}{\tablelineaction}
And here is end....
\page
Printing only specific data:
\doloopif{\name}{eq}{You}{\tablelineaction}
\page
Simpletablelineaction:
\doloopif{1}{==}{1}{\simpletablelineaction}
\page
Another using of hooks:
\def\bch{\bgroup\linecolor\bf } % begin column hook
\def\ech{\egroup,\ } % end column hook
\def\blinehook{Here is new \numline. line of CSV file:\crlf } % begin
line hook
\def\elinehook{\hairline\par} % end line hook
\def\bfilehook{Here is all CSV file:\blank[2*big] } % begin CSV file hook
\def\efilehook{\par Here is end of file processing\par} % end CSV file hook
\doloopif{1}{==}{1}{\tablelineaction}
\stoptext
Dne 8.12.2014 17:21, Pablo Rodriguez napsal(a):
> Hi Jaroslav,
>
> many thanks for your reply.
>
> It works fine here. Let’s see what I can do tomorrow with the real
> documents :-)
>
> Many thanks for your help again,
>
>
> Pablo
>
>
> On 12/08/2014 01:56 PM, Jaroslav Hajtmar wrote:
>> Hello Pablo.
>> What do you think of this solution:
>>
>> \usemodule[scancsv]
>>
>> \setuppapersize[C6, landscape]
>> \setuppagenumbering[location=]
>>
>> \unexpanded\def\lineaction{
>> \edef\lcA{\lowercase{\cA}}
>> \edef\ucB{\uppercase{\cB}}
>> cA: \cA -- lowercase cA: \lcA\crlf
>> cB: \cB -- upercase cB: \ucB\crlf
>> cC: \cC -- cD: \cD\crlf
>>
>> \lowercase{AAAA}\crlf
>> \uppercase{bbbb}\crlf
>> \page
>> }
>>
>> \setsep{;}
>> \setfiletoscan{mailmergedatatable.csv}
>>
>> \starttext
>> \filelineaction
>> \stoptext
>>
>>
>> I greet you
>>
>> Jaroslav Hajtmar
___________________________________________________________________________________
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 : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
next prev parent reply other threads:[~2014-12-08 23:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-08 12:38 Pablo Rodriguez
2014-12-08 12:56 ` Jaroslav Hajtmar
2014-12-08 16:21 ` Pablo Rodriguez
2014-12-08 23:45 ` Jaroslav Hajtmar [this message]
2014-12-10 19:40 ` Pablo Rodriguez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=548637FF.4000600@gyza.cz \
--to=hajtmar@gyza.cz \
--cc=ntg-context@ntg.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).