* expand date from CSV file @ 2014-12-17 21:20 Pablo Rodriguez 2014-12-18 8:39 ` Jaroslav Hajtmar 0 siblings, 1 reply; 8+ messages in thread From: Pablo Rodriguez @ 2014-12-17 21:20 UTC (permalink / raw) To: mailing list for ConTeXt users Dear list, I have the following sample: \usemodule[scancsv] \unexpanded\def\lineaction{ \Name\ arrived on \Date\\ } \setheader \setsep{;} \setfiletoscan{mail.csv} \starttext \filelineaction \stoptext that reads data from mail.csv: Name;Date ME;11/10/14 You;05/02/14 He;15/02/2014 She;03/03/12 It;03/03/14 My question is simple (and not related to CSV data import): how can I define a command (ConTeXt or Lua) that changes date format from DD/MM/YY to DD/MM/YYYY when required? Many thanks for your help, Pablo -- http://www.ousia.tk ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-17 21:20 expand date from CSV file Pablo Rodriguez @ 2014-12-18 8:39 ` Jaroslav Hajtmar 2014-12-18 12:24 ` Jaroslav Hajtmar 0 siblings, 1 reply; 8+ messages in thread From: Jaroslav Hajtmar @ 2014-12-18 8:39 UTC (permalink / raw) To: ntg-context Hi Pablo Here is a quick solution. However, it not treat the incorrect input data, ie it requires, however, correct input, otherwise it will collapse ... Jaroslav Hajtmar \usemodule[scancsv] \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator \startlua parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); day=tonumber(parsedate[1]); month=tonumber(parsedate[2]); year=tonumber(parsedate[3]); if (year<2000) then year=year+2000 end; tex.print(day..'#3'..month..'#3'..year); \stoplua } \unexpanded\def\lineaction{ \Name\ arrived on \ddmmyyyy{\Date}{/}{.} \\ } % Name;Date % ME;11/10/14 % You;05/02/14 % He;15/02/2014 % She;03/03/12 % It;03/03/14 \setheader \setsep{;} \setfiletoscan{mail.csv} \starttext \filelineaction \stoptext Dne 17.12.2014 22:20, Pablo Rodriguez napsal(a): > Dear list, > > I have the following sample: > > \usemodule[scancsv] > > \unexpanded\def\lineaction{ > \Name\ arrived on \Date\\ > } > > \setheader > \setsep{;} > \setfiletoscan{mail.csv} > > \starttext > \filelineaction > \stoptext > > that reads data from mail.csv: > > Name;Date > ME;11/10/14 > You;05/02/14 > He;15/02/2014 > She;03/03/12 > It;03/03/14 > > My question is simple (and not related to CSV data import): how can I > define a command (ConTeXt or Lua) that changes date format from DD/MM/YY > to DD/MM/YYYY when required? > > Many thanks for your help, > > > Pablo ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 8:39 ` Jaroslav Hajtmar @ 2014-12-18 12:24 ` Jaroslav Hajtmar 2014-12-18 12:37 ` Peter Münster 2014-12-18 18:07 ` Pablo Rodriguez 0 siblings, 2 replies; 8+ messages in thread From: Jaroslav Hajtmar @ 2014-12-18 12:24 UTC (permalink / raw) To: ntg-context Hi Pablo, I am sending still slightly modified version (use local variables and better typographic output). It use of much variables, but at least it is clear how it works. For solution occurred me to use parsing function that I have been defined in the library, so that it can be successfully used. Sincerely Jaroslav Hajtmar \usemodule[scancsv] \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator \startlua local parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); local day=tonumber(parsedate[1]); local month=tonumber(parsedate[2]); local year=tonumber(parsedate[3]); if (year<2000) then year=year+2000 end; tex.print(day..'#3'..month..'#3'..year); \stoplua } \unexpanded\def\lineaction{ \Name\ arrived on \ddmmyyyy{\Date}{/}{.\\,} \\ } % Name;Date % ME;11/10/14 % You;05/02/14 % He;15/02/2014 % She;03/03/12 % It;03/03/14 \setheader \setsep{;} \setfiletoscan{mail.csv} \starttext \filelineaction \stoptext Dne 18.12.2014 9:39, Jaroslav Hajtmar napsal(a): > Hi Pablo > > Here is a quick solution. However, it not treat the incorrect input > data, ie it requires, however, correct input, otherwise it will > collapse ... > > Jaroslav Hajtmar > > > > \usemodule[scancsv] > > \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator > \startlua > parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); > day=tonumber(parsedate[1]); > month=tonumber(parsedate[2]); > year=tonumber(parsedate[3]); > if (year<2000) then year=year+2000 end; > tex.print(day..'#3'..month..'#3'..year); > \stoplua > } > > \unexpanded\def\lineaction{ > \Name\ arrived on \ddmmyyyy{\Date}{/}{.} \\ > } > > > % Name;Date > % ME;11/10/14 > % You;05/02/14 > % He;15/02/2014 > % She;03/03/12 > % It;03/03/14 > > \setheader > \setsep{;} > \setfiletoscan{mail.csv} > > \starttext > \filelineaction > \stoptext > > > > > > Dne 17.12.2014 22:20, Pablo Rodriguez napsal(a): >> Dear list, >> >> I have the following sample: >> >> \usemodule[scancsv] >> >> \unexpanded\def\lineaction{ >> \Name\ arrived on \Date\\ >> } >> >> \setheader >> \setsep{;} >> \setfiletoscan{mail.csv} >> >> \starttext >> \filelineaction >> \stoptext >> >> that reads data from mail.csv: >> >> Name;Date >> ME;11/10/14 >> You;05/02/14 >> He;15/02/2014 >> She;03/03/12 >> It;03/03/14 >> >> My question is simple (and not related to CSV data import): how can I >> define a command (ConTeXt or Lua) that changes date format from DD/MM/YY >> to DD/MM/YYYY when required? >> >> Many thanks for your help, >> >> >> Pablo > > ___________________________________________________________________________________ > > 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 > ___________________________________________________________________________________ ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 12:24 ` Jaroslav Hajtmar @ 2014-12-18 12:37 ` Peter Münster 2014-12-18 18:09 ` Pablo Rodriguez 2014-12-20 6:40 ` Jaroslav Hajtmar 2014-12-18 18:07 ` Pablo Rodriguez 1 sibling, 2 replies; 8+ messages in thread From: Peter Münster @ 2014-12-18 12:37 UTC (permalink / raw) To: ntg-context; +Cc: mailing list for ConTeXt users On Thu, Dec 18 2014, Jaroslav Hajtmar wrote: > if (year<2000) then year=year+2000 end; Hi, What about "Test;11/11/1999" ... ;-) -- Peter ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 12:37 ` Peter Münster @ 2014-12-18 18:09 ` Pablo Rodriguez 2014-12-20 6:40 ` Jaroslav Hajtmar 1 sibling, 0 replies; 8+ messages in thread From: Pablo Rodriguez @ 2014-12-18 18:09 UTC (permalink / raw) To: mailing list for ConTeXt users On 12/18/2014 01:37 PM, Peter Münster wrote: > On Thu, Dec 18 2014, Jaroslav Hajtmar wrote: > >> if (year<2000) then year=year+2000 end; > > Hi, > > What about "Test;11/11/1999" ... ;-) Hi Peter, all dates start from this year :-). Pablo -- http://www.ousia.tk ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 12:37 ` Peter Münster 2014-12-18 18:09 ` Pablo Rodriguez @ 2014-12-20 6:40 ` Jaroslav Hajtmar 1 sibling, 0 replies; 8+ messages in thread From: Jaroslav Hajtmar @ 2014-12-20 6:40 UTC (permalink / raw) To: mailing list for ConTeXt users ;-) Thanx Peter. I'm too not thought about solutions :-). I was so focused to mined data from a CSV file, and I've not think much about the appropriate algorithm. I love attentive and thoughtful people (although often I'm not alone such) Maybe I corrected in a subsequent e-mail properly. One more thanx. Jaroslav Hajtmar Dne 18.12.2014 v 13:37 Peter Münster napsal(a): > On Thu, Dec 18 2014, Jaroslav Hajtmar wrote: > >> if (year<2000) then year=year+2000 end; > Hi, > > What about "Test;11/11/1999" ... ;-) > ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 12:24 ` Jaroslav Hajtmar 2014-12-18 12:37 ` Peter Münster @ 2014-12-18 18:07 ` Pablo Rodriguez 2014-12-19 2:07 ` Jaroslav Hajtmar 1 sibling, 1 reply; 8+ messages in thread From: Pablo Rodriguez @ 2014-12-18 18:07 UTC (permalink / raw) To: mailing list for ConTeXt users On 12/18/2014 01:24 PM, Jaroslav Hajtmar wrote: > Hi Pablo, > I am sending still slightly modified version (use local variables and > better typographic output). > It use of much variables, but at least it is clear how it works. For > solution occurred me to use parsing function that I have been defined in > the library, so that it can be successfully used. Many thanks for your reply, Jaroslav. This is exactly what I need. Many thanks for your help, Pablo > \usemodule[scancsv] > > \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator > \startlua > local parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); > local day=tonumber(parsedate[1]); > local month=tonumber(parsedate[2]); > local year=tonumber(parsedate[3]); > if (year<2000) then year=year+2000 end; > tex.print(day..'#3'..month..'#3'..year); > \stoplua > } > > \unexpanded\def\lineaction{ > \Name\ arrived on \ddmmyyyy{\Date}{/}{.\\,} \\ > } > > > % Name;Date > % ME;11/10/14 > % You;05/02/14 > % He;15/02/2014 > % She;03/03/12 > % It;03/03/14 > > \setheader > \setsep{;} > \setfiletoscan{mail.csv} > > \starttext > \filelineaction > \stoptext > > > > > Dne 18.12.2014 9:39, Jaroslav Hajtmar napsal(a): >> Hi Pablo >> >> Here is a quick solution. However, it not treat the incorrect input >> data, ie it requires, however, correct input, otherwise it will >> collapse ... >> >> Jaroslav Hajtmar >> >> >> >> \usemodule[scancsv] >> >> \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator >> \startlua >> parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); >> day=tonumber(parsedate[1]); >> month=tonumber(parsedate[2]); >> year=tonumber(parsedate[3]); >> if (year<2000) then year=year+2000 end; >> tex.print(day..'#3'..month..'#3'..year); >> \stoplua >> } >> >> \unexpanded\def\lineaction{ >> \Name\ arrived on \ddmmyyyy{\Date}{/}{.} \\ >> } >> >> >> % Name;Date >> % ME;11/10/14 >> % You;05/02/14 >> % He;15/02/2014 >> % She;03/03/12 >> % It;03/03/14 >> >> \setheader >> \setsep{;} >> \setfiletoscan{mail.csv} >> >> \starttext >> \filelineaction >> \stoptext >> >> >> >> >> >> Dne 17.12.2014 22:20, Pablo Rodriguez napsal(a): >>> Dear list, >>> >>> I have the following sample: >>> >>> \usemodule[scancsv] >>> >>> \unexpanded\def\lineaction{ >>> \Name\ arrived on \Date\\ >>> } >>> >>> \setheader >>> \setsep{;} >>> \setfiletoscan{mail.csv} >>> >>> \starttext >>> \filelineaction >>> \stoptext >>> >>> that reads data from mail.csv: >>> >>> Name;Date >>> ME;11/10/14 >>> You;05/02/14 >>> He;15/02/2014 >>> She;03/03/12 >>> It;03/03/14 >>> >>> My question is simple (and not related to CSV data import): how can I >>> define a command (ConTeXt or Lua) that changes date format from DD/MM/YY >>> to DD/MM/YYYY when required? >>> >>> Many thanks for your help, >>> >>> >>> Pablo -- http://www.ousia.tk ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: expand date from CSV file 2014-12-18 18:07 ` Pablo Rodriguez @ 2014-12-19 2:07 ` Jaroslav Hajtmar 0 siblings, 0 replies; 8+ messages in thread From: Jaroslav Hajtmar @ 2014-12-19 2:07 UTC (permalink / raw) To: ntg-context Hi Pablo. Peter pointed out an error in my solution. Thanks Peter! His message but pointed out that in fact is not the task as simple as it seems at first glance. In fact, a lot depends on what target group for those you solve a problem resp. whether e.g. date of birth of persons. What does it mean 03/01/00? It means 1/3/1900? Or does it mean 01/03/2000? Particular job you have to deal specifically separately. It occurred to me yet following solution that respects the current year as the year when he could anyone born. E.g. 19/12/14 means a newborn soul (ie. In fact, 12/19/2014), while 01/02/15 mean old man ie. in fact 01/02/1915. For the specific case you have to modify or create the solution separately. Greetings Jaroslav Hajtmar Here is new minimal example: \usemodule[scancsv] \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator \startlua local parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); local day=tonumber(parsedate[1]); local month=tonumber(parsedate[2]); local year=tonumber(parsedate[3]); if (year<100) then % when is only two digits year format then if year<=14 then % it is very young person year=year+2000 else % this person has more than one hundred years year=year+1900; end; end; tex.print(day..'#3'..month..'#3'..year); \stoplua } \unexpanded\def\lineaction{ \Name\ born \Date\quad (\ddmmyyyy{\Date}{/}{.\\,}) \\ } % Content of CSV file: % Name;Date % ME;11/10/14 % You;05/02/14 % He;15/02/2014 % She;03/03/12 % It;03/03/14 % A;11/11/1999 % B;01/2/1964 % C;02/3/23 % D;03/4/64 % E;04/5/00 % F;05/6/01 % G;05/7/15 % H;05/7/1915 % Test0;1/2/00 % Test1;1/2/01 % Test2;1/2/02 % Test3;1/2/03 % Test4;1/2/04 % Test5;1/2/05 % Test6;1/2/06 % Test7;1/2/07 % Test8;1/2/08 % Test9;1/2/09 % Test10;1/2/10 % Test11;1/2/11 % Test12;1/2/12 % Test13;1/2/13 % Test14;1/2/14 % Test15;1/2/15 % Test16;1/2/16 % Test17;1/2/17 % Test18;1/2/18 % Test19;1/2/19 % Test20;1/2/20 \setheader \setsep{;} \setfiletoscan{mail.csv} \starttext \filelineaction \stoptext Dne 18.12.2014 19:07, Pablo Rodriguez napsal(a): > On 12/18/2014 01:24 PM, Jaroslav Hajtmar wrote: >> Hi Pablo, >> I am sending still slightly modified version (use local variables and >> better typographic output). >> It use of much variables, but at least it is clear how it works. For >> solution occurred me to use parsing function that I have been defined in >> the library, so that it can be successfully used. > Many thanks for your reply, Jaroslav. > > This is exactly what I need. > > Many thanks for your help, > > Pablo > > >> \usemodule[scancsv] >> >> \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator >> \startlua >> local parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); >> local day=tonumber(parsedate[1]); >> local month=tonumber(parsedate[2]); >> local year=tonumber(parsedate[3]); >> if (year<2000) then year=year+2000 end; >> tex.print(day..'#3'..month..'#3'..year); >> \stoplua >> } >> >> \unexpanded\def\lineaction{ >> \Name\ arrived on \ddmmyyyy{\Date}{/}{.\\,} \\ >> } >> >> >> % Name;Date >> % ME;11/10/14 >> % You;05/02/14 >> % He;15/02/2014 >> % She;03/03/12 >> % It;03/03/14 >> >> \setheader >> \setsep{;} >> \setfiletoscan{mail.csv} >> >> \starttext >> \filelineaction >> \stoptext >> >> >> >> >> Dne 18.12.2014 9:39, Jaroslav Hajtmar napsal(a): >>> Hi Pablo >>> >>> Here is a quick solution. However, it not treat the incorrect input >>> data, ie it requires, however, correct input, otherwise it will >>> collapse ... >>> >>> Jaroslav Hajtmar >>> >>> >>> >>> \usemodule[scancsv] >>> >>> \def\ddmmyyyy#1#2#3{% #1 - date, #2 - old separator, #3 - new separator >>> \startlua >>> parsedate=thirddata.scancsv.ParseCSVLine('#1','#2'); >>> day=tonumber(parsedate[1]); >>> month=tonumber(parsedate[2]); >>> year=tonumber(parsedate[3]); >>> if (year<2000) then year=year+2000 end; >>> tex.print(day..'#3'..month..'#3'..year); >>> \stoplua >>> } >>> >>> \unexpanded\def\lineaction{ >>> \Name\ arrived on \ddmmyyyy{\Date}{/}{.} \\ >>> } >>> >>> >>> % Name;Date >>> % ME;11/10/14 >>> % You;05/02/14 >>> % He;15/02/2014 >>> % She;03/03/12 >>> % It;03/03/14 >>> >>> \setheader >>> \setsep{;} >>> \setfiletoscan{mail.csv} >>> >>> \starttext >>> \filelineaction >>> \stoptext >>> >>> >>> >>> >>> >>> Dne 17.12.2014 22:20, Pablo Rodriguez napsal(a): >>>> Dear list, >>>> >>>> I have the following sample: >>>> >>>> \usemodule[scancsv] >>>> >>>> \unexpanded\def\lineaction{ >>>> \Name\ arrived on \Date\\ >>>> } >>>> >>>> \setheader >>>> \setsep{;} >>>> \setfiletoscan{mail.csv} >>>> >>>> \starttext >>>> \filelineaction >>>> \stoptext >>>> >>>> that reads data from mail.csv: >>>> >>>> Name;Date >>>> ME;11/10/14 >>>> You;05/02/14 >>>> He;15/02/2014 >>>> She;03/03/12 >>>> It;03/03/14 >>>> >>>> My question is simple (and not related to CSV data import): how can I >>>> define a command (ConTeXt or Lua) that changes date format from DD/MM/YY >>>> to DD/MM/YYYY when required? >>>> >>>> Many thanks for your help, >>>> >>>> >>>> Pablo > ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2014-12-20 6:40 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-12-17 21:20 expand date from CSV file Pablo Rodriguez 2014-12-18 8:39 ` Jaroslav Hajtmar 2014-12-18 12:24 ` Jaroslav Hajtmar 2014-12-18 12:37 ` Peter Münster 2014-12-18 18:09 ` Pablo Rodriguez 2014-12-20 6:40 ` Jaroslav Hajtmar 2014-12-18 18:07 ` Pablo Rodriguez 2014-12-19 2:07 ` Jaroslav Hajtmar
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).