Hello,
can \directlua be nested, i.e.
\directlua0{\directlua0{tex.print('foo()')}}
to call Lua function 'foo'?
\directlua is never called recursively, even though it sometimes looks like it is. The example above is syntactically wrong, but this works (ignoring \catcode issues):
\directlua0{tex.print('\directlua0{foo()}')}
I'm not sure why: In your example, the second \directlua is expanded while the first \directlua expands its argument, just like in my example. You would have to surround it with \unexpanded or \detokenize (and \luaescapestring because of the backslash) to pass it unmodified to tex.print.
however, executation is serialized. The output of tex.print is not seen until the end of the outer \directlua is reached.
Ah. So \directlua first reads its second parameter and then expands it completely, instead of expanding tokens until it reaches the closing brace delimiting its second parameter, and therefore does not include the output of tex.print? (just like \edef does)
Best wishes, Taco
Jonathan