changeset 702:87970832a3c3

improve Http_test
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 04 May 2016 20:45:40 -0600
parents d0280c7fdc3a
children 6e6e9e73abaa
files core/src/luan/modules/StringLuan.java http/src/luan/modules/http/Http_test.luan website/src/manual.html.luan
diffstat 3 files changed, 32 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
diff -r d0280c7fdc3a -r 87970832a3c3 core/src/luan/modules/StringLuan.java
--- a/core/src/luan/modules/StringLuan.java	Wed May 04 17:49:41 2016 -0600
+++ b/core/src/luan/modules/StringLuan.java	Wed May 04 20:45:40 2016 -0600
@@ -233,7 +233,8 @@
 		return null;
 	}
 
-	public static boolean matches(String s,String pattern) {
+	public static boolean matches(String s,String pattern) throws LuanException {
+		Utils.checkNotNull(s);
 		return Pattern.compile(pattern).matcher(s).find();
 	}
 
diff -r d0280c7fdc3a -r 87970832a3c3 http/src/luan/modules/http/Http_test.luan
--- a/http/src/luan/modules/http/Http_test.luan	Wed May 04 17:49:41 2016 -0600
+++ b/http/src/luan/modules/http/Http_test.luan	Wed May 04 20:45:40 2016 -0600
@@ -1,6 +1,8 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
 local set_metatable = Luan.set_metatable or error()
+local try = Luan.try or error()
+local Package = require "luan:Package.luan"
 local Io = require "luan:Io.luan"
 local String = require "luan:String.luan"
 local matches = String.matches or error()
@@ -13,14 +15,27 @@
 M.cookie = {}
 
 function M.get_page(path)
+	Http.request.path = path
 	if M.welcome_file ~= nil and matches(path,"/$") then
 		path = path .. M.welcome_file
 	end
 	local old_out = Io.stdout
-	local mod = require("site:"..path..".luan")
-	mod()
-	M.text_writer.close()
-	Io.stdout = old_out
+	try {
+		function()
+			local mod = Package.load("site:"..path..".luan")
+			if mod ~= nil then
+				mod()
+			else
+				local not_found = Package.load("site:/not_found.luan")
+				not_found or error(path.." not found")
+				not_found()
+			end
+			M.text_writer.close()
+		end
+		finally = function()
+			Io.stdout = old_out
+		end
+	}
 	return M.result.read_text()
 end
 
@@ -35,19 +50,23 @@
 			M.result = Io.uri "string:"
 			M.text_writer = M.result.text_writer()
 			return M.text_writer
-		end;
+		end
 
 		set_cookie = function(name,value)
 			M.cookie[name] = value
-		end;
+		end
 
 		remove_cookie = function(name)
 			M.cookie[name] = nil
-		end;
+		end
 
 		send_redirect = function(url)
 			Http.response.redirect = url
-		end;
+		end
+
+		send_error = function(code)
+			error("sent error "..code)
+		end
 
 	}
 
diff -r d0280c7fdc3a -r 87970832a3c3 website/src/manual.html.luan
--- a/website/src/manual.html.luan	Wed May 04 17:49:41 2016 -0600
+++ b/website/src/manual.html.luan	Wed May 04 20:45:40 2016 -0600
@@ -2167,13 +2167,13 @@
 try {
 	function()
 		a_dangerous_fn()
-	end;
+	end
 	catch = function(e)
 		-- handle error
-	end;
+	end
 	finally = function()
 		-- clean up
-	end;
+	end
 }
 </pre>