Re: [NTG-context] Tabulator in database file not passed to Lua
On 1/25/2014 1:32 AM, Joshua Krämer wrote: Am Thu, 23 Jan 2014 23:17:24 +0100 schrieb Hans Hagen : \startluacode local f = io.open("test.dat") for line in f:lines() do local t = string.split(line,";") -- or "\t" for tabs context("% /t",t) -- context(table.concat(t," / ") context.par() end \stopluacode \stoptext Thanks, I was not aware of the Context Lua extensions. Should have read the wiki more thoroughly ... While I'm new to Lua, I already enjoy it. It opens a whole new world of possibilities to ConTeXt, making this great software even better! Thank you very much for all the hard work. http://www.pragma-ade.nl/general/manuals/cld-mkiv.pdf - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] Tabulator in database file not passed to Lua
Am Thu, 23 Jan 2014 23:17:24 +0100 schrieb Hans Hagen : > \startluacode > > local f = io.open("test.dat") > > for line in f:lines() do > local t = string.split(line,";") -- or "\t" for tabs > context("% /t",t) -- context(table.concat(t," / ") > context.par() > end > > \stopluacode > > \stoptext Thanks, I was not aware of the Context Lua extensions. Should have read the wiki more thoroughly ... While I'm new to Lua, I already enjoy it. It opens a whole new world of possibilities to ConTeXt, making this great software even better! Thank you very much for all the hard work. Kind regards, Joshua Krämer ___ 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 ___
Re: [NTG-context] Tabulator in database file not passed to Lua
On 1/23/2014 9:43 PM, Joshua Krämer wrote: Dear list, I use the database module to load the lines of a file with some data. The lines are then separated with a lua script. I use lua, because I need to do some other things with the data (rounding numbers, combining some fields etc.) Please consider the following minimal working example: \usemodule[database] \defineseparatedlist [Data] [ before=, after=, separator={}, commentchar=\letterpercent, command=\Tabrow, ] \startluacode function explode(sep,str) if (sep=="") then return false end local pos,arr = 0,{} -- for each separator found for st,sp in function() return string.find(str,sep,pos,true) end do -- Attach chars left of current separator table.insert(arr,string.sub(str,pos,st-1)) -- Jump past current separator pos = sp + 1 end -- Attach chars right of last separator table.insert(arr,string.sub(str,pos)) return arr end function tabrow(fileline) local tabarray = explode(";",fileline) local tabline = "" for index,value in ipairs(tabarray) do tabline = tabline .. " / " .. value end return tabline end \stopluacode \define[1]\Tabrow{\ctxlua{context(tabrow("#1"))}} \starttext \processseparatedfile[Data][Test.dat] \stoptext This is the content of the file Test.dat: Eins;zwei;drei;vier Of course the line separation could be done easier with the database module. However, I thought this way I could use the tabulator as the separator in my file. But when I change the separator from ";" to "\\t", it doesn't work. I suppose this is because the tabulators are passed to Lua as spaces. Or is "\\t" the wrong code? Would it be possible to use tabulators as separators, if I load the file with lua and not with the database module? \starttext \startluacode local f = io.open("test.dat") for line in f:lines() do local t = string.split(line,";") -- or "\t" for tabs context("% /t",t) -- context(table.concat(t," / ") context.par() end \stopluacode \stoptext - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
[NTG-context] Tabulator in database file not passed to Lua
Dear list, I use the database module to load the lines of a file with some data. The lines are then separated with a lua script. I use lua, because I need to do some other things with the data (rounding numbers, combining some fields etc.) Please consider the following minimal working example: \usemodule[database] \defineseparatedlist [Data] [ before=, after=, separator={}, commentchar=\letterpercent, command=\Tabrow, ] \startluacode function explode(sep,str) if (sep=="") then return false end local pos,arr = 0,{} -- for each separator found for st,sp in function() return string.find(str,sep,pos,true) end do -- Attach chars left of current separator table.insert(arr,string.sub(str,pos,st-1)) -- Jump past current separator pos = sp + 1 end -- Attach chars right of last separator table.insert(arr,string.sub(str,pos)) return arr end function tabrow(fileline) local tabarray = explode(";",fileline) local tabline = "" for index,value in ipairs(tabarray) do tabline = tabline .. " / " .. value end return tabline end \stopluacode \define[1]\Tabrow{\ctxlua{context(tabrow("#1"))}} \starttext \processseparatedfile[Data][Test.dat] \stoptext This is the content of the file Test.dat: Eins;zwei;drei;vier Of course the line separation could be done easier with the database module. However, I thought this way I could use the tabulator as the separator in my file. But when I change the separator from ";" to "\\t", it doesn't work. I suppose this is because the tabulators are passed to Lua as spaces. Or is "\\t" the wrong code? Would it be possible to use tabulators as separators, if I load the file with lua and not with the database module? Kind regards, Joshua Krämer ___ 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 ___