From: Hans Hagen <pragma@wxs.nl>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Subject: Re: Tabulator in database file not passed to Lua
Date: Thu, 23 Jan 2014 23:17:24 +0100 [thread overview]
Message-ID: <52E194F4.3020109@wxs.nl> (raw)
In-Reply-To: <20140123214331.5456ea4a@Klapprechner1.site>
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
___________________________________________________________________________________
next prev parent reply other threads:[~2014-01-23 22:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-23 20:43 Joshua Krämer
2014-01-23 22:17 ` Hans Hagen [this message]
2014-01-25 0:32 ` Joshua Krämer
2014-01-25 0:23 ` Hans Hagen
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=52E194F4.3020109@wxs.nl \
--to=pragma@wxs.nl \
--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).