Am 22.10.2011 18:46, schrieb Thomas A. Schmitz:
Hi all,
again, I'm playing a bit with processing my xml in lua. I want a simple interface for processing tables (I don't need all the power and complexity of cals tables and want to learn something in the process). And I thought that collecting the setups in lua might be the easiest way, but so far, I haven't been successful. Here's an example:
\startbuffer[test] <a> <nattable frame="on"> <tr> <td>1</td> <td>2</td> <td>3</td> <td>4</td> </tr> <tr> <td>5</td> <td>6</td> <td>7</td> <td>8</td> </tr> </nattable> </a> \stopbuffer
\startxmlsetups xml:testsetups \xmlsetsetup{main}{a|nattable|tr|td|}{xml:*} \stopxmlsetups
\xmlregistersetup{xml:testsetups}
\startxmlsetups xml:a \xmlflush{#1} \stopxmlsetups
\startxmlsetups xml:nattable \startluacode framestate = lxml.att("#1", "frame")
context(type(framestate)) Here is the problem. The function lxml.att() only prints the attribute, but returns nothing (framestate = nil). I looked into an old example of mine where I played with attributes, but it's totally outdated (uses xml.filters, now mkii only). Sorry, no solution (goat milk was out). Peter [lxml-tex.lua] function lxml.attribute(id,pattern,a,default) local collected = xmlapplylpath(getid(id),pattern) if collected then attribute(collected,a,default) end end local function attribute(collected,a,default) if collected and #collected > 0 then local at = collected[1].at local str = (at and at[a]) or default if str and str ~= "" then contextsprint(notcatcodes,str) end elseif default then contextsprint(notcatcodes,default) end end
context(framestate)
does nothing
context(true) context.placefigure( { "here" }, "none" , function() context.setupTABLE( { "frame=on" } ) context.bTABLE() context.xmlflush("#1") context.eTABLE() end) \stopluacode \stopxmlsetups
\startxmlsetups xml:tr \startluacode context.bTR() context.xmlflush("#1") context.eTR() \stopluacode \stopxmlsetups
\startxmlsetups xml:td \startluacode context.bTD() context.xmlflush("#1") context.eTD() \stopluacode \stopxmlsetups
\starttext \xmlprocessbuffer{main}{test}{} \stoptext
question: I have the value "on" in the lua variable "framestate." But how can I pass this on to the line context.setupTABLE( { "frame=on" } )? I tried something like context.setupTABLE( { "frame=" .. framestate } ) but that doesn't work. Any suggestions?
Thomas ___________________________________________________________________________________
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://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___________________________________________________________________________________