-- This file is part of the Lua@Client project -- Copyright (c) 2014-2015 Felipe Daragon -- License: MIT local M = { js_served = false, } local common = require "latclient.common" function M.get_header(s) if M.js_served == false then M.js_served = true local header = [[ ]] header = string.gsub(header, "{url}", M.js_url) s = header..s end return s end function M.get_client_js(s) local s = common.js_string_escape(s) s = '' return M.get_header(s) end function M.get_provide_script(fn,path,filename) local js = [[ (function(Lua5_1) { Lua5_1.provide_file(%s, %s, %s,true, false); })(Lua5_1); ]] local file = io.open (fn, "r") local src = file:read("*all") file:close() src = M.js_string_escape(src) path = M.js_string_escape(path) filename = M.js_string_escape(filename) return string.format(js, path, filename, src) end -- File provider for mod_lua function M.handle(r,path,filename) r.content_type = "text/javascript" if filename == nil then filename = r.uri:match( "([^/]+)$") end if path == nil then path = r.uri:match("^@?(.-)/"..filename.."$").."/" end r:puts(M.get_provide_script(r.filename,path,filename)) return apache2.OK end -- File provider for CGI-Lua function M.cgilua_exit(path,filename) if cgilua ~= nil then cgilua.contentheader("text","javascript") if filename == nil then filename = cgilua.script_path:match( "([^/]+)$") end if path == nil then path = cgilua.servervariable("SCRIPT_NAME"):match("^@?(.-)/"..filename.."$").."/" end cgilua.put(M.get_provide_script(cgilua.script_path,path,filename)) os.exit() end end return M