[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: run a lua page (cgilua) in command line
- From: Robert Raschke <rrlua@...>
- Date: Wed, 23 Nov 2005 13:19:21 +0000
I run a little program to allow some templating using the cgilua
stuff. The function script() takes a filename and returns the cgi'ed
contents as a string. You'll have to decide what to do about errors.
Robby
scripter.lua:
--[[
This is a shim layer around the scripting technology of CGILua.
The idea is to use the CGILua pretty much as a black box,
knowing only about the includehtml() function, which does the
<% %> magic.
To get this to work we set ourselves up as a Server API (SAPI,
part of the CGI Lua setup), which assembles the result of the
script as a string. The original way is to write out the
result to standard output, which is not useful for us.
Additionally we put errors into the log.
]]
local SCRIPTER_RESULT = ""
SAPI = {
Response = {
-- Headers, nuthin'
contenttype = function (s) return end,
redirect = function (s) return end,
header = function (h, v) return end,
-- Contents
write = function (s) SCRIPTER_RESULT = SCRIPTER_RESULT .. (s or "") end,
errorlog = function (s) do_something_about_the_error(s) end,
},
Request = {
-- We do not deal with Input POST data
getpostdata = function (n) return nil end,
-- Input general information
servervariable = function (n) return os.getenv(n) or "UNSET" end,
},
}
require"cgilua"
cgilua.seterrorhandler(function (msg) do_something_about_the_error(msg) end)
cgilua.seterroroutput(function (msg) SAPI.Response.errorlog(msg) end)
put = SAPI.Response.write
function file_exists(file_name)
local file = io.open(file_name)
if file then
file:close()
end
return file ~= nil
end
function script(name)
assert( file_exists(name), "Cannot read template '" .. name .. "': No such file.")
SCRIPTER_RESULT = ""
cgilua.includehtml(name)
return SCRIPTER_RESULT
end