diff mod_firewall/mod_firewall.lua @ 1303:8a3f3f485675

mod_firewall: Produce code with nicer indentation
author Florian Zeitz <florob@babelmonkeys.de>
date Sun, 16 Feb 2014 17:17:23 +0100
parents 80f0a3231c59
children 9f24ccaa66a6
line wrap: on
line diff
--- a/mod_firewall/mod_firewall.lua	Fri Feb 14 15:08:11 2014 +0100
+++ b/mod_firewall/mod_firewall.lua	Sun Feb 16 17:17:23 2014 +0100
@@ -44,7 +44,7 @@
 -- end
 
 local available_deps = {
-	st = { global_code = [[local st = require "util.stanza"]]};
+	st = { global_code = [[local st = require "util.stanza";]]};
 	jid_split = {
 		global_code = [[local jid_split = require "util.jid".split;]];
 	};
@@ -117,9 +117,9 @@
 	end
 	if dep_info.local_code then
 		if dep_param ~= "" then
-			table.insert(code, "\n\t-- "..dep.."\n\t"..dep_info.local_code(dep_param).."\n\n\t");
+			table.insert(code, "\n\t\t-- "..dep.."\n\t\t"..dep_info.local_code(dep_param).."\n");
 		else
-			table.insert(code, "\n\t-- "..dep.."\n\t"..dep_info.local_code.."\n\n\t");
+			table.insert(code, "\n\t\t-- "..dep.."\n\t\t"..dep_info.local_code.."\n");
 		end
 	end
 	code.included_deps[dep] = true;
@@ -283,7 +283,8 @@
 			for _, dep in ipairs(rule.deps) do
 				include_dep(dep, code);
 			end
-			local rule_code = table.concat(rule.actions, "\n\t");
+			table.insert(code, "\n\t\t");
+			local rule_code;
 			if #rule.conditions > 0 then
 				for i, condition in ipairs(rule.conditions) do
 					local negated = condition:match("^not%(.+%)$");
@@ -296,13 +297,15 @@
 						n_conditions = n_conditions + 1;
 						local name = "condition"..n_conditions;
 						condition_cache[condition] = name;
-						table.insert(code, "local "..name.." = "..condition..";\n\t");
+						table.insert(code, "local "..name.." = "..condition..";\n\t\t");
 						rule.conditions[i] = (negated and "not(" or "")..name..(negated and ")" or "");
 					end
 				end
-				rule_code = "if "..table.concat(rule.conditions, " and ").." then\n\t"
-				..rule_code
-				.."\n end\n";
+				rule_code = "if "..table.concat(rule.conditions, " and ").." then\n\t\t\t"
+					..table.concat(rule.actions, "\n\t\t\t")
+					.."\n\t\tend\n";
+			else
+				rule_code = table.concat(rule.actions, "\n\t\t");
 			end
 			table.insert(code, rule_code);
 		end
@@ -311,15 +314,13 @@
 			table.insert(code.global_header, 1, "local "..name:lower().."s = definitions."..name..";");
 		end
 
-		local code_string = [[return function (definitions, fire_event, log)
-			]]..table.concat(code.global_header, "\n")..[[
-			local db = require 'util.debug'
-			return function (event)
-				local stanza, session = event.stanza, event.origin;
-
-				]]..table.concat(code, " ")..[[
-			end;
-		end]];
+		local code_string = "return function (definitions, fire_event, log)\n\t"
+			..table.concat(code.global_header, "\n\t")
+			.."\n\tlocal db = require 'util.debug';\n\n\t"
+			.."return function (event)\n\t\t"
+			.."local stanza, session = event.stanza, event.origin;\n"
+			..table.concat(code, "")
+			.."\n\tend;\nend";
 
 		chain_handlers[chain_name] = code_string;
 	end