[NTG-context] XML Processing with Verbatim (VIM-Typing)

Aditya Mahajan adityam at umich.edu
Fri Feb 13 01:00:49 CET 2015


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


More information about the ntg-context mailing list