diff options
author | Karl Berry <karl@freefriends.org> | 2019-09-04 21:48:11 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-09-04 21:48:11 +0000 |
commit | 2e1a43e142131c37b71aed86135a03a5f4e5489a (patch) | |
tree | 4d1f034de37b9624fe1d00246d1ab98179089175 /Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua | |
parent | 44e65427bf48a4f0e8ec4fa535155720bcc80cae (diff) |
luaxml (4sep19)
git-svn-id: svn://tug.org/texlive/trunk@52029 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua')
-rw-r--r-- | Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua b/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua index edffef25528..d40b761547d 100644 --- a/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua +++ b/Master/texmf-dist/tex/luatex/luaxml/luaxml-mod-xml.lua @@ -170,10 +170,12 @@ local xmlParser = function(handler) obj.options = { stripWS = 1, expandEntities = 1, + voidElements = {}, errorHandler = function(err,pos) error(format("%s [char=%d]\n", err or "Parse Error",pos)) end, + } -- Public methods @@ -183,6 +185,8 @@ local xmlParser = function(handler) parseAttributes = true end self._handler.parseAttributes = parseAttributes + local handler_options = self._handler.options or {} + local void_elements = handler_options.voidElements or {} local match,endmatch,pos = 0,0,1 local text,endt1,endt2,tagstr,tagname,attrs,starttext,endtext @@ -331,12 +335,12 @@ local xmlParser = function(handler) end else -- Start Tag - table.insert(self._stack,tagname) + table.insert(self._stack,tagname) if self._handler.starttag then self._handler:starttag(tagname,attrs,match,endmatch) end - -- Self-Closing Tag - if (endt2=="/") then + -- Self-Closing Tag. Skip void elements + if (endt2=="/") and not void_elements[tagname] then table.remove(self._stack) if self._handler.endtag then self._handler:endtag(tagname,nil,match,endmatch) |