From f47b4939787074397c9ea37c1d892a1f7ccc7290 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Wed, 21 Mar 2018 09:47:34 +0100 Subject: 2018-03-21 09:24:00 --- tex/context/base/mkiv/lxml-tex.lua | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'tex/context/base/mkiv/lxml-tex.lua') diff --git a/tex/context/base/mkiv/lxml-tex.lua b/tex/context/base/mkiv/lxml-tex.lua index 1413159ec..f1abab9e7 100644 --- a/tex/context/base/mkiv/lxml-tex.lua +++ b/tex/context/base/mkiv/lxml-tex.lua @@ -17,7 +17,7 @@ local lpegmatch = lpeg.match local P, S, C, Cc, Cs = lpeg.P, lpeg.S, lpeg.C, lpeg.Cc, lpeg.Cs local patterns = lpeg.patterns local setmetatableindex = table.setmetatableindex -local formatters = string.formatters +local formatters, strip = string.formatters, string.strip local tex, xml = tex, xml local lowerchars, upperchars, lettered = characters.lower, characters.upper, characters.lettered @@ -60,6 +60,7 @@ local xmlpushmatch = xml.pushmatch local xmlpopmatch = xml.popmatch local xmlstring = xml.string local xmlserializetotext = xml.serializetotext +local xmlrename = xml.rename local variables = interfaces and interfaces.variables or { } @@ -2579,3 +2580,20 @@ implement { actions = lxml.applyselectors, arguments = "string" } + +-- bonus: see x-lmx-html.mkiv + +function texfinalizers.xml(collected,name,setup) + local root = collected[1] + if not root then + return + end + if not name or name == "" then + report_lxml("missing name in xml finalizer") + return + end + xmlrename(root,name) + name = "lmx:" .. name + buffers.assign(name,strip(xmltostring(root))) + context.xmlprocessbuffer(name,name,setup or (name..":setup")) +end -- cgit v1.2.3