On 03/18/2014 11:30 PM, Aditya Mahajan wrote:
On Tue, 18 Mar 2014, Pablo Rodriguez wrote:
The next one (AFAIK) should work on every OS:
\startluacode local user = "" local users = { ["ousia"] = 1, } function document.CheckUser() user = os.resultof("echo ousia") context.verbatim(user) end
function document.UserNumber(name) context.verbatim(users[name or user] or 0) end \stopluacode
\def\CheckUser {\ctxlua{document.CheckUser ()}} \def\UserNumber{\ctxlua{document.UserNumber()}}
\starttext This is user \CheckUser with number \UserNumber. \stoptext
(Untested)
Change `local user` by
~~~ userdata = userdata or {} userdata.user = "" ~~~
and all other occurances of `user` by `userdata.user`.
Many thanks for your reply, Aditya. I followed your instructions, but I’m afraid that it doesn’t work. I cannot say whether it is my fault, since this is all Greek to me. I tried a simpler approach (my guess, I discovered the existence of \executesystemcommand yesterday), which doesn’t work either: \def\Checkuser{\executesystemcommand{echo rightuser > tmp-yser.txt}} \def\CheckUser{\Checkuser\input tmp-yser.txt} \def\UserNumber{\processaction[\CheckUser][rightuser=>1, unknown=>user unknown]} \starttext This is user \CheckUser\ with number \UserNumber. \stoptext I don’t know why the \UserNumber command cannot process action and why the backslash after \CheckUser is required, since it seems to add an extra space. What am I doing wrong in the previous example? Many thanks for your help, Pablo -- http://www.ousia.tk