![](https://secure.gravatar.com/avatar/49e63acb01f2ca80efce7eed08310ce8.jpg?s=120&d=mm&r=g)
On 12/22/2013 3:57 PM, Hans Hagen wrote:
On 12/21/2013 12:50 PM, DesdeChaves wrote:
I know that metapost can send the variables "version", "number", "string", "point", "quad", "boolean" and "path" to Context. "triplet" variable can't pass. It will be very usefull if metapost can send a array to context.
\startMPcode
numeric x[]; for i = 1 upto 10: x[i]:=random; endfor
passvariable("array",x); passvariable("version","1.0") ; passvariable("number",x[1]) ; passvariable("string","whatever") ; passvariable("point",(1,2)) ; passvariable("triplet",(1,2,3)) ; passvariable("quad",(1,2,3,4)) ; passvariable("boolean",false) ; passvariable("path",fullcircle scaled 1cm) ;
\stopMPcode
\ctxluacode{inspect(metapost.variables)}
\ctxcommand{mprunvar("array")}
Thanks in advance
that's less trivial (as automatism) so i provide passarrayvariable now (next beta) ... of course the next request would concern complex arrays so i also made a more low level flusher
\starttext
\startMPcode numeric n[] ; for i=1 upto 10: n[i] := i + 1 ; endfor ; path p[] ; for i=1 upto 10: p[i] := fullcircle scaled (i*cm) ; endfor ; numeric n[][] ; for i=1,4 : for j=1,3 : n[i][j] = uniformdeviate(1) ; endfor ; endfor ;
passvariable("x",12345) ; passarrayvariable("n-array",n,1,7,1) ; passarrayvariable("p-array",p,1,7,1) ; passvariable("p",(1,1) .. (2,2)) ;
% watch out: no ; in between
startpassingvariable("b") startarray for i=1,4 : startarray for j=1,3 : value(n[i][j]) endfor stoparray endfor stoparray stoppassingvariable ;
startpassingvariable("a") starthash key("test1") startarray value(123) value(456) stoparray key("test2") starthash key("test") value(789) stophash stophash stoppassingvariable ;
draw fullcircle scaled 1cm ; \stopMPcode
\ctxluacode{inspect(metapost.variables)}
\ctxcommand{mprunvar("x")}
\stoptext
\starttext % \enabletrackers[metapost.variables] \startMPcode numeric n[] ; for i=1 upto 10: n[i] := 1/i ; endfor ; path p[] ; for i=1 upto 10: p[i] := fullcircle xyscaled (cm*i,cm/i) ; endfor ; numeric r[][] ; for i=1 upto 4 : for j=1 upto 3 : r[i][j] := uniformdeviate(1) ; endfor ; endfor ; pair u[][] ; for i=1 step 0.5 until 4 : for j=1 step 0.1 until 2 : u[i][j] := (i,j) ; endfor ; endfor ; passvariable("x",12345) ; passarrayvariable("n-array",n,1,7,1) ; passarrayvariable("p-array",p,1,7,1) ; passvariable("p",(1,1) .. (2,2)) ; startpassingvariable("b") startarray for i=1 upto 4 : startarray for j=1 upto 3 : value(r[i][j]) endfor stoparray endfor stoparray stoppassingvariable ; startpassingvariable("a") starthash key("test 1") startarray value(123) value(456) stoparray key("test 2") startarray index(0) value(123) value(456) value(789) slot(999,987) stoparray key("test 3") starthash key("first") value(789) entry("second",987) stophash stophash stoppassingvariable ; startpassingvariable("c") startarray for i=1 step 0.5 until 4 : index(i) startarray for j=1 step 0.1 until 2 : slot(j,u[i][j]) endfor stoparray endfor stoparray stoppassingvariable ; draw fullcircle scaled 1cm ; \stopMPcode \ctxluacode{inspect(metapost.variables)} \ctxcommand{mprunvar("x")} \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------