---@module Handler to generate a simple event trace which --outputs messages to the terminal during the XML --parsing, usually for debugging purposes. -- -- License: -- ======== -- -- This code is freely distributable under the terms of the [MIT license](LICENSE). -- --@author Paul Chakravarti (paulc@passtheaardvark.com) --@author Manoel Campos da Silva Filho local print = {} ---Parses a start tag. -- @param tag a {name, attrs} table -- where name is the name of the tag and attrs -- is a table containing the atributtes of the tag -- @param s position where the tag starts -- @param e position where the tag ends function print:starttag(tag, s, e) io.write("Start : "..tag.name.."\n") if tag.attrs then for k,v in pairs(tag.attrs) do io.write(string.format(" + %s='%s'\n", k, v)) end end end ---Parses an end tag. -- @param tag a {name, attrs} table -- where name is the name of the tag and attrs -- is a table containing the atributtes of the tag -- @param s position where the tag starts -- @param e position where the tag ends function print:endtag(tag, s, e) io.write("End : "..tag.name.."\n") end ---Parses a tag content. -- @param text text to process -- @param s position where the tag starts -- @param e position where the tag ends function print:text(text, s, e) io.write("Text : "..text.."\n") end ---Parses CDATA tag content. -- @param text CDATA content to be processed -- @param s position where the tag starts -- @param e position where the tag ends function print:cdata(text, s, e) io.write("CDATA : "..text.."\n") end ---Parses a comment tag. -- @param text comment text -- @param s position where the tag starts -- @param e position where the tag ends function print:comment(text, s, e) io.write("Comment : "..text.."\n") end ---Parses a DTD tag. -- @param tag a {name, attrs} table -- where name is the name of the tag and attrs -- is a table containing the atributtes of the tag -- @param s position where the tag starts -- @param e position where the tag ends function print:dtd(tag, s, e) io.write("DTD : "..tag.name.."\n") if tag.attrs then for k,v in pairs(tag.attrs) do io.write(string.format(" + %s='%s'\n", k, v)) end end end --- Parse a XML processing instructions (PI) tag. -- @param tag a {name, attrs} table -- where name is the name of the tag and attrs -- is a table containing the atributtes of the tag -- @param s position where the tag starts -- @param e position where the tag ends function print:pi(tag, s, e) io.write("PI : "..tag.name.."\n") if tag.attrs then for k,v in pairs(tag.attrs) do io. write(string.format(" + %s='%s'\n",k,v)) end end end ---Parse the XML declaration line (the line that indicates the XML version). -- @param tag a {name, attrs} table -- where name is the name of the tag and attrs -- is a table containing the atributtes of the tag -- @param s position where the tag starts -- @param e position where the tag ends function print:decl(tag, s, e) io.write("XML Decl : "..tag.name.."\n") if tag.attrs then for k,v in pairs(tag.attrs) do io.write(string.format(" + %s='%s'\n", k, v)) end end end return print