annotate src/luan/modules/http/tools/Shell.luan @ 1277:5ba660381bd5

fix Io.print()
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 11 Dec 2018 03:38:43 -0700
parents 2de84f128be3
children 007ceb8dcf89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
1 local Luan = require "luan:Luan.luan"
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
2 local error = Luan.error
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
3 local ipairs = Luan.ipairs or error()
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
4 local load = Luan.load or error()
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
5 local to_string = Luan.to_string or error()
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
6 local try = Luan.try or error()
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
7 local String = require "luan:String.luan"
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
8 local concat = String.concat or error()
1277
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
9 local Table = require "luan:Table.luan"
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
10 local pack = Table.pack or error()
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
11 local unpack = Table.unpack or error()
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
12 local Time = require "luan:Time.luan"
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
13 local Thread = require "luan:Thread.luan"
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
14 local Io = require "luan:Io.luan"
554
18504c41b0be move debug() to Io and remove Debug module;
Franklin Schmidt <fschmidt@gmail.com>
parents: 506
diff changeset
15 local print = Io.print or error()
693
ca169567ce07 module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents: 609
diff changeset
16 local Http = require "luan:http/Http.luan"
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
17 local Logging = require "luan:logging/Logging.luan"
1218
a50803fde972 http/tools cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1216
diff changeset
18 local logger = Logging.logger "Shell"
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
19
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20
1218
a50803fde972 http/tools cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1216
diff changeset
21 local Shell = {}
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 497
diff changeset
22
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
23 local forever = Time.period{days=1000000}
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
24 local count = 0
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
25 local new_session = Thread.global_callable("shell.new_session",forever,{next=function()
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
26 count = count + 1
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
27 return to_string(count)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
28 end}).next
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
29
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
30 local history = ""
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
31 local env = {}
1218
a50803fde972 http/tools cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1216
diff changeset
32 Shell.env = env
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
33
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
34 local fns = {}
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
35
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
36 function fns.history()
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
37 return history
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
38 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
39
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
40 function fns.run(cmd)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
41 Io.stdout = {}
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
42 Io.stdout.write = function(...)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
43 history = concat(history,...)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
44 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
45 print( "% "..cmd )
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
46 try {
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
47 function()
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
48 local line
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
49 try {
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
50 function()
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
51 line = load("return "..cmd,"<web_shell>",env)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
52 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
53 catch = function(e)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
54 line = load(cmd,"<web_shell>",env)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
55 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
56 }
1277
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
57 local rtn = pack( line() )
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
58 if rtn.n > 0 then
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
59 print( unpack(rtn) )
5ba660381bd5 fix Io.print()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1245
diff changeset
60 end
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
61 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
62 catch = function(e)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
63 Io.print_to(Io.stderr,e)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
64 print(e)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
65 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
66 }
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
67 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
68
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
69 local timeout = Time.period{hours=10}
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
70
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
71 local function get_session(session_id)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
72 return Thread.global_callable("shell.session"..session_id,timeout,fns)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
73 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
74
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
75 local function remove_session(session_id)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
76 return Thread.remove_global_callable("shell.session"..session_id)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
77 end
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
78
1218
a50803fde972 http/tools cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1216
diff changeset
79 function Shell.respond()
1245
Franklin Schmidt <fschmidt@gmail.com>
parents: 1218
diff changeset
80 local session_id = Http.request.cookies["session"]
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
81 if session_id == nil then
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
82 session_id = new_session()
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
83 Http.response.set_cookie("session",session_id)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
84 end
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
85 local session = get_session(session_id)
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
86
1152
21d157b153fe change http parameters interface
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
87 if Http.request.parameters.clear ~= nil then
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
88 remove_session(session_id)
609
24b05963ba62 shell "clear" button now clears the session
Franklin Schmidt <fschmidt@gmail.com>
parents: 560
diff changeset
89 Http.response.send_redirect(Http.request.path) -- reload page
24b05963ba62 shell "clear" button now clears the session
Franklin Schmidt <fschmidt@gmail.com>
parents: 560
diff changeset
90 return
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
91 else
1152
21d157b153fe change http parameters interface
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
92 local cmd = Http.request.parameters.cmd
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
93 if cmd ~= nil then
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
94 session.run(cmd)
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
95 end
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
96 end
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
97
325
78a6a71afbfd use SimplyHTML
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 321
diff changeset
98 Io.stdout = Http.response.text_writer()
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
99 %>
1216
5dbb552075ff doctype
Franklin Schmidt <fschmidt@gmail.com>
parents: 1177
diff changeset
100 <!doctype html>
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
101 <html>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
102 <head>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
103 <title>Luan Shell</title>
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
104 <style>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
105 body {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
106 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
107 margin: 2em 5% 0 5%;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
108 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
109 pre {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
110 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
111 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
112 input[type="text"] {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
113 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
114 padding: .5em .8em;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
115 border-radius: 8px;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
116 border-style: groove;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
117 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
118 input[type="text"]:focus {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
119 border-color: #66afe9;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
120 outline: none;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
121 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
122 input[type="submit"] {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
123 color: white;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
124 background: #337ab7;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
125 border-color: #337ab7;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
126 font: inherit;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
127 padding: .5em;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
128 border-radius: 4px;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
129 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
130 input[type="submit"]:hover {
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
131 background: #236aa7 !important;
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
132 }
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
133 </style>
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
134 </head>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
135 <body>
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
136 <h2>Luan Shell</h2>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
137 <p>This is a command shell. Enter commands below.</p>
1159
3ef883468fd0 remove Http.per_session_pages
Franklin Schmidt <fschmidt@gmail.com>
parents: 1152
diff changeset
138 <pre><%= session.history() %></pre>
1245
Franklin Schmidt <fschmidt@gmail.com>
parents: 1218
diff changeset
139 <form method='post'>
560
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
140 % <input type="text" name='cmd' size="80" autofocus>
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
141 <input type="submit" value="run">
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
142 <input type="submit" name="clear" value="clear">
2f39468680be remove SimplyHTML from shell
Franklin Schmidt <fschmidt@gmail.com>
parents: 554
diff changeset
143 </form>
391
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
144 </body>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
145 </html>
2f5cc9c2cbf0 replace Html.simply_html_page with simply_html_head and simply_html_body_bottom
Franklin Schmidt <fschmidt@gmail.com>
parents: 347
diff changeset
146 <%
139
3b384dc5ca91 replace WebShell.java with web_shell.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
147 end
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 497
diff changeset
148
1218
a50803fde972 http/tools cleanup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1216
diff changeset
149 return Shell