view web/src/luan/modules/web/web_shell.luan @ 321:7f7708e8fdd4

remove import statement git-svn-id: https://luan-java.googlecode.com/svn/trunk@322 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Sun, 08 Feb 2015 07:26:20 +0000
parents 9fb523472035
children 78a6a71afbfd
line wrap: on
line source

local Luan = require "luan:Luan"
local ipairs = Luan.ipairs
local load = Luan.load
local Io = require "luan:Io"
local print = Io.print
local Debug = require "luan:Debug"
local Http = require "luan:web/Http"

per_session = true

local history = {}
local env = {}

Io.stdout = {}
function Io.stdout.write(...)
	for _,v in Luan.values(...) do
		history[#history+1] = v
	end
end

function service()
	if Http.request.parameters.clear ~= nil then
		history = {}
	else
		local cmd = Http.request.parameters.cmd
		if cmd ~= nil then
			print( "% "..cmd )
			try
				local line = load(cmd,"<web_shell>",env,true)
				Debug.print_if_something( line() )
			catch e do
				Io.print_to(Io.stderr,e)
				print(e)
			end
		end
	end

	local write = Http.response.text_writer().write
	write(%>
<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Luan Shell</title>
		<style>
			body {font-family:'Arial',sans-serif;font-size:16px;padding:1em 2em}
			input {padding:.5em;border-radius:10px;border:1px solid #ccc;font-size:16px}
			input.btn {background:#3B619D;color:#FFF;padding:.3em 0;font-size:20px;min-width:4em;}
			h1 {font-weight:bold;font-size: 20px}
			p {margin:1em 0 .2em}
		</style>
	</head>
	<body>
		<h1>Luan Shell</h1>
		<p>This is a command shell.  Enter commands below.</p>
		<pre><%)
		for _,v in ipairs(history) do
			write(v)
		end
		write(%></pre>
		<form name='form0' method='post'>
			% <input name='cmd' size="60">
			<input type="submit" class="btn" value="run">
			<input type="submit" class="btn" name="clear" value="clear">
		</form>

		<script>document.form0.cmd.focus();</script>
	</body>
</html>
<%)

end