That's great. This is exactly what I needed for now, though Max's magic may be useful in the future.
Am 29.03.2025 um 16:06 schrieb Mohammad Hossein Bateni:
> Hello,
>
> I have some code like this:
>
> ---------------------------------
> \def\MakeSomething{... some code that returns number 12}
>
> \startluacode
> function WorkWithSomething(data)
> -- call MakeSomething to obtain 12
> -- base on the value above make some decisions
> end
>
> WorkWithSomething(some_data)
> \stopluacode
> ---------------------------------
>
> If I use context.MakeSomething() inside the lua block, this is
> buffered till the end of the block, so I can't get the result and work
> with it.
>
> If MakeSomething is a command already "edef-ed", I can use
> tokens.getters.macro.MakeSomething to find the value.
>
> If MakeSomething has an argument which is determined within the
> lua block, then I can't use this hack.
>
> The ugly partial solution I have found is to change the signature of
> WorkWithSomething to receive an argument and then I replicate the
> parameters of MakeSomething on the TeX side:
>
> ---------------------------------
> \def\MakeSomething#1{...}
>
> \startluacode
> function WorkWithSomething(data,MakeSomethingOutput)
> -- we wanted to use some computation on data to obtain input to
> MakeSomething
> -- then call MakeSomething to obtain its result
> end
> \stopluacode
>
> \ctxlua{WorkWithSomething(some_data, "\MakeSomething{replicate
> processing on data to obtain input to this macro}")}
> ---------------------------------
>
> Is there a more elegant solution?
> Ideally I want a way to start a TeX process under Lua, and
> process the macros there before I get to the next line of Lua code.
>
> In my motivation, MakeSomething is \datasetvariable. I wanted to look up
> something in the dataset and use it for the rest of computation/typesetting.
ConTeXt provides the following function to access dataset values:
job.datasets.getdata(name,tag,key,default)
Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive : https://github.com/contextgarden/context
wiki : https://wiki.contextgarden.net
___________________________________________________________________________________