view web/src/luan/modules/web/web_shell.luan @ 325:78a6a71afbfd

use SimplyHTML git-svn-id: https://luan-java.googlecode.com/svn/trunk@326 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 03 Mar 2015 06:00:59 +0000
parents 7f7708e8fdd4
children db37d6aee4db
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"
local Html = require "luan:Html"

per_session = true

local history = {}
local env = {}

function service()
	if Http.request.parameters.clear ~= nil then
		history = {}
	else
		local cmd = Http.request.parameters.cmd
		if cmd ~= nil then
			Io.stdout = {}
			function Io.stdout.write(...)
				for _,v in Luan.values(...) do
					history[#history+1] = v
				end
			end
			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

	Io.stdout = Http.response.text_writer()
	Html.simple_html_page{
		head = function() %>
			<title>Luan Shell</title>
<%		end;
		body = function() %>
			<div container>
				<h3>Luan Shell</h3>
				<p>This is a command shell.  Enter commands below.</p>
				<pre><%
				for _,v in ipairs(history) do
					Io.stdout.write(v)
				end
				%></pre>
				<form name='form0' method='post'>
					% <input name='cmd' size="80" autofocus>
					<input type="submit" value="run" textcolor="white" bgcolor="#337ab7">
					<input type="submit" name="clear" value="clear" textcolor="white" bgcolor="#337ab7">
				</form>
			</div>
<%		end;
	}

end