ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "Joshua Krämer" <joshua.kraemer-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: ntg-context-wvrSQK3plZs@public.gmane.org
Subject: Tabulator in database file not passed to Lua
Date: Thu, 23 Jan 2014 21:43:31 +0100	[thread overview]
Message-ID: <20140123214331.5456ea4a@Klapprechner1.site> (raw)

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
___________________________________________________________________________________

             reply	other threads:[~2014-01-23 20:43 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-23 20:43 Joshua Krämer [this message]
2014-01-23 22:17 ` Hans Hagen
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=20140123214331.5456ea4a@Klapprechner1.site \
    --to=joshua.kraemer-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=ntg-context-wvrSQK3plZs@public.gmane.org \
    /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).