On Thu, 12 Feb 2015, Hans Hagen wrote:
On 2/11/2015 12:15 PM, Andreas Schneider wrote:
Am 10.02.2015 22:45, schrieb Hans Hagen:
\startluacode function xml.functions.processJSON(t) buffers.assign("foo","\\startJSON\n" .. tostring(xml.text(t)) .. "\n\\stopJSON") context.getbuffer { "foo" } end \stopluacode
\startxmlsetups xml:json \pushcatcodetable \setcatcodetable\ctxcatcodes \xmlfunction{#1}{processJSON} \popcatcodetable \stopxmlsetups
(If needed I can make a better plugin for this ... remind me later this year.)
t-filter provides a \process<filter>buffer macro. So, in principle, \processJSONbuffer[foo] should have worked, but it did not due to a bug. I have fixed that and pushed the latest version to context garden. With this, the following should also work (untested)
\startluacode function xml.functions.processJSON(t) buffers.assign("foo", tostring(xml.text(t))) context.processJSONbuffer { "foo" } end \stopluacode
\startxmlsetups xml:json \xmlfunction{#1}{processJSON} \stopxmlsetups
That works like a charm! From my perspective, no changes are necessary. I personally like some technical trickery in my ConTeXt code, especially if it's as slim as your solution. (Mainly because that helps me understand the inner workings and hopefully makes me find solutions like this on my own :-))
so then you have to wikify it (or add it to the t-vim module docu)
If others also need similar functionality, I can look into adding xml processing features or the appropriate lua functions to t-filter. Aditya