util.adhoc: New util for generating common adhoc handler patterns
authorFlorian Zeitz <florob@babelmonkeys.de>
Tue, 23 Apr 2013 14:49:31 +0200
changeset 5513 755f705f126a
parent 5510 3758898cefdd
child 5514 1091d7c3b4d2
util.adhoc: New util for generating common adhoc handler patterns
util/adhoc.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util/adhoc.lua	Tue Apr 23 14:49:31 2013 +0200
@@ -0,0 +1,31 @@
+local function new_simple_form(form, result_handler)
+	return function(self, data, state)
+		if state then
+			if data.action == "cancel" then
+				return { status = "canceled" };
+			end
+			local fields, err = form:data(data.form);
+			return result_handler(fields, err, data);
+		else
+			return { status = "executing", actions = {"next", "complete", default = "complete"}, form = form }, "executing";
+		end
+	end
+end
+
+local function new_initial_data_form(form, initial_data, result_handler)
+	return function(self, data, state)
+		if state then
+			if data.action == "cancel" then
+				return { status = "canceled" };
+			end
+			local fields, err = form:data(data.form);
+			return result_handler(fields, err, data);
+		else
+			return { status = "executing", actions = {"next", "complete", default = "complete"},
+				 form = { layout = form, values = initial_data() } }, "executing";
+		end
+	end
+end
+
+return { new_simple_form = new_simple_form,
+	 new_initial_data_form = new_initial_data_form };