ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Sending data from lua to context and back to lua
@ 2018-02-07 17:39 Rudolf Bahr
  2018-02-08  5:51 ` Rudolf Bahr
  2018-02-08  8:30 ` Thomas A. Schmitz
  0 siblings, 2 replies; 8+ messages in thread
From: Rudolf Bahr @ 2018-02-07 17:39 UTC (permalink / raw)
  To: mailing list for ConTeXt users

[-- Attachment #1: Type: text/plain, Size: 2228 bytes --]


Hello Contexteers!

Sometimes the necessity could arise to send data from lua to context
and answers back to lua. I tried this by using "read" and
"immediate\write" commands in context. These commands are described
in chapter 21 and 22 of Donald E. Knuth's "The TeXbook".

My question is: Do there exist better and more simple solutions?
Here is my WE which is admittedly a little bit ugly, but it works.
Appended the pdf-output:

========================================================================
\starttext

\startluacode

tex.print("Here is lua.")
tex.print(" ")
tex.print("I'm sending some picture names to Context in order to get back their sizes.")

local imageA = "2007-01-01---Intro.png"
local imageB = "2007-01-01---Neujahrsballade---1.png"
local imageC = "2007-01-01---Neujahrsballade---2.png"

local f = assert(io.open("contextin.txt", "w"))
f:write(imageA .. "\n" .. imageB .. "\n" .. imageC)
f:close()

\stopluacode

% -------------------------------------------------------------

\openin15=contextin.txt

\read15 to \zeileA
\read15 to \zeileB
\read15 to \zeileC

\closein15

\vskip\lineheight
=====================================================
\vskip\lineheight
Here is \CONTEXT\ and what I got from Lua:
\vskip\lineheight

\zeileA \\
\zeileB \\
\zeileC

\vskip\lineheight
Now I'm working ... and write my answers to a file for lua: \\

\zeileA\ width=3000pt height=2000pt \\
\zeileB\ width=1200pt height=900pt  \\
\zeileC\ width=1600pt height=1200pt \\

\immediate\openout7=contextout.txt

\immediate\write7{\zeileA\ width=3000pt height=2000pt \\}
\immediate\write7{\zeileB\ width=1200pt height=900pt  \\}
\immediate\write7{\zeileC\ width=1600pt height=1200pt \\}

\immediate\closeout7

\vskip\lineheight
=====================================================
\vskip\lineheight

% -------------------------------------------------------------

\startluacode

tex.print("Here is lua again and what I got back from Context:")
tex.print(" ")
tex.print(" ")

local f = assert(io.open("contextout.txt", "r"))
local contexts_answer = f:read("*a")
f:close()

tex.print(contexts_answer)

\stopluacode


\stoptext

========================================================================

Best regards,

Rudolf


[-- Attachment #2: input-test.pdf --]
[-- Type: application/pdf, Size: 9806 bytes --]

[-- Attachment #3: Type: text/plain, Size: 492 bytes --]

___________________________________________________________________________________
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://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-02-08 16:28 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-07 17:39 Sending data from lua to context and back to lua Rudolf Bahr
2018-02-08  5:51 ` Rudolf Bahr
2018-02-08  8:30 ` Thomas A. Schmitz
2018-02-08 14:34   ` Rudolf Bahr
2018-02-08 15:18     ` Thomas A. Schmitz
2018-02-08 15:25     ` Hans Hagen
2018-02-08 15:26     ` Henning Hraban Ramm
2018-02-08 16:28       ` Rudolf Bahr

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).