ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Tabulator in database file not passed to Lua
@ 2014-01-23 20:43 Joshua Krämer
  2014-01-23 22:17 ` Hans Hagen
  0 siblings, 1 reply; 4+ messages in thread
From: Joshua Krämer @ 2014-01-23 20:43 UTC (permalink / raw)
  To: ntg-context-wvrSQK3plZs

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
___________________________________________________________________________________

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

* Re: Tabulator in database file not passed to Lua
  2014-01-23 20:43 Tabulator in database file not passed to Lua Joshua Krämer
@ 2014-01-23 22:17 ` Hans Hagen
  2014-01-25  0:32   ` Joshua Krämer
  0 siblings, 1 reply; 4+ messages in thread
From: Hans Hagen @ 2014-01-23 22:17 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________

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

* Re: Tabulator in database file not passed to Lua
  2014-01-25  0:32   ` Joshua Krämer
@ 2014-01-25  0:23     ` Hans Hagen
  0 siblings, 0 replies; 4+ messages in thread
From: Hans Hagen @ 2014-01-25  0:23 UTC (permalink / raw)
  To: mailing list for ConTeXt users

On 1/25/2014 1:32 AM, Joshua Krämer wrote:
> Am Thu, 23 Jan 2014 23:17:24 +0100
> schrieb Hans Hagen <pragma@wxs.nl>:
>> \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
___________________________________________________________________________________

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

* Re: Tabulator in database file not passed to Lua
  2014-01-23 22:17 ` Hans Hagen
@ 2014-01-25  0:32   ` Joshua Krämer
  2014-01-25  0:23     ` Hans Hagen
  0 siblings, 1 reply; 4+ messages in thread
From: Joshua Krämer @ 2014-01-25  0:32 UTC (permalink / raw)
  To: ntg-context-wvrSQK3plZs

Am Thu, 23 Jan 2014 23:17:24 +0100
schrieb Hans Hagen <pragma@wxs.nl>:
> \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
___________________________________________________________________________________

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

end of thread, other threads:[~2014-01-25  0:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-23 20:43 Tabulator in database file not passed to Lua Joshua Krämer
2014-01-23 22:17 ` Hans Hagen
2014-01-25  0:32   ` Joshua Krämer
2014-01-25  0:23     ` Hans Hagen

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).