#!/usr/bin/lua
---Simple command line test parser - applies handler[s] specified
-- to XML file (or STDIN) and dumps results
--
-- $Id: testxml.lua,v 1.1.1.1 2001/11/28 06:11:33 paulc Exp $
--
-- $Log: testxml.lua,v $
-- Revision 1.1.1.1 2001/11/28 06:11:33 paulc
-- Initial Import
--
local modxml
local handler
local pretty
if kpse then
modxml = require('luaxml-mod-xml')
handler = require('luaxml-mod-handler')
pretty = require('luaxml-pretty')
else
modxml = require('luaxml.mod-xml')
handler = require('luaxml.mod-handler')
pretty = require('luaxml.pretty')
end
-- Defaults
_print = nil
_simpletree = nil
_dom = nil
_file = nil
_xmlrpc = nil
_debug = nil
_ws = nil
_noentity = nil
_usage = [[
textxml.lua [-print] [-simpletree] [-dom] [-xmlrpc] [-debug]
[-ws] [-noentity] [-help] [file]
]]
_help = [[
testxml.lua - Simple command line XML processor
Options:
-print : Generate event dump (default)
-simpletree : Generate simple tree
-dom : Generate DOM-like tree
-debug : Print debug info (filename/text)
-ws : Do not strip whitespace
-noentity : Do not expand entities
-help : Print help
file : XML File (parse stdin in nil)
]]
index = 1
local exit = os.exit
function setOptions(x)
if _ws then
x.options.stripWS = nil
end
if _noentity then
x.options.expandEntities = nil
end
end
while arg[index] do
--print (arg[index])
if (string.sub(arg[index],1,1)=='-') then
if arg[index] == "-print" then
_print = 1
elseif arg[index] == "-simpletree" then
_simpletree= 1
elseif arg[index] == "-dom" then
_dom= 1
elseif arg[index] == "-xmlrpc" then
_xmlrpc= 1
elseif arg[index] == "-debug" then
_debug = 1
elseif arg[index] == "-ws" then
_ws = 1
elseif arg[index] == "-noentity" then
_noentity = 1
elseif arg[index] == "-help" then
print(_usage)
exit()
else
print(_usage)
exit()
end
else
-- Filename is last argument if present
if arg[index+1] then
print(_usage)
exit()
else
_file = arg[index]
end
end
index = index + 1
end
if _file then
print("File",_file)
if (_debug) then
io.write ( "File: ".._file.."\n" )
end
--xml = read(openfile(_file,"r"),"*a")
local f, e = io.open(_file, "r")
if f then
xml = f:read("*a")
else
error(e)
end
else
xml = io.read("*a")
end
if _debug then
io.write ( "----------- XML\n" )
io.write (xml.."\n")
end
if _print or not (_print or _dom or _simpletree or _print or _xmlrpc) then
io.write ( "----------- Print\n" )
h = handler.printHandler()
x = modxml.xmlParser(h)
setOptions(x)
x:parse(xml)
end
if _simpletree then
io.write ( "----------- SimpleTree\n" )
h = handler.simpleTreeHandler()
x = modxml.xmlParser(h)
setOptions(x)
x:parse(xml)
pretty.pretty('root',h.root)
end
if _dom then
io.write ( "----------- Dom\n" )
h = handler.domHandler()
x = modxml.xmlParser(h)
setOptions(x)
x:parse(xml)
pretty.pretty('root',h.root)
io.write ( "-----------\n" )
end