[NTG-context] \ctxlua and \startluacode ... \stopluacode

Rudolf Bahr quasi at quasi.de
Mon Oct 14 21:07:12 CEST 2019


On Mon, Oct 14, 2019 at 07:19:53PM +0200, Hans Hagen wrote:
> On 10/14/2019 6:50 PM, Rudolf Bahr wrote:
 
> > THis MWE must be faulty, but where is the error?
> > 
> > ====================================================
> > 
> > \startluacode
> > 
> > userdata = userdata or {}
> > 
> > function userdata.file_exists (name)
> > 
> >     local name = name
> >     local f    = assert ( io.open ( name, "r" ))
> > 
> >     if f then
> >        f:close ()
> >        context ( name )
> >        context ( "  exists!" )
> >     else
> >        context ( name )
> >        context ( "  doesn't exist!" )
> >     end
> > end
> > 
> > \stopluacode
> > 
> > 
> > \starttext
> > 
> > \def\lookupfile#1%
> > 	{\ctxlua{userdata.file_exists([==[#1]==])}}
> > 
> > \lookupfile{"$HOME/context-tests/AAA.lua"}	% "AAA.lua" intentionally does    exist
> > \lookupfile{"$HOME/context-tests/BBB.lua"}	% "BBB.lua" intentionally doesn't exist
> > 
> > \stoptext
> > 
> > ====================================================
> > 
> > It makes no difference in commenting out the first or the second "\lookupfile" command.
> > The error message eventually is always nearly the same:
> > 
> > token call, execute: [ctxlua]:8: "$HOME/context-tests/AAA.lua": No such file or directory
> > token call, execute: [ctxlua]:8: "$HOME/context-tests/BBB.lua": No such file or directory


Joseph, Taco and Hans, I thank you very much for your quick answers!
I shall try Hans' interesting suggestion on prefix resolvers after I've studied it,
for which I certainly need some time!

But before doing so I've a comment:
Your answers, Joseph, Taco and Hans, could  lead to the impression, that giving up
"double quotes as part of file names" and/or "$HOME" in the MWE would be the solution.
And indeed, not using "double quotes" and "expanding $HOME" by hand partly brings success:

1. In the case of an existing file (AAA.lua) the MWE works without error message!
   I will append the output-pdf-file here (just for fun!).

2. But in the case of an not existing file (BBB.lua) the known error message comes up
   again:
   "token call, execute: [ctxlua]:8: /home/sam/context-tests/BBB.lua: No such file or 
    directory".
    This, of course, is true, but shouldn't be mentioned in an error message!

Within \startluacode ... \stopluacode it seems one has to abandon the normal lua world,
at least partly. Are there other "special features"?

Rudolf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: is-file.pdf
Type: application/pdf
Size: 5592 bytes
Desc: not available
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20191014/04c84d5b/attachment.pdf>


More information about the ntg-context mailing list