# HG changeset patch
# User Matthew Wild <mwild1@gmail.com>
# Date 1286504360 -3600
# Node ID bb494c3aa36430b64ed0681270483efe70bdf2a4
# Parent  fdae08713c67b7301ec867db16da8fc03eb052ea
configmanager: Allow VirtualHost/Component definitions to be followed by a table of config options

diff -r fdae08713c67 -r bb494c3aa364 core/configmanager.lua
--- a/core/configmanager.lua	Fri Oct 08 02:48:47 2010 +0100
+++ b/core/configmanager.lua	Fri Oct 08 03:19:20 2010 +0100
@@ -137,6 +137,12 @@
 			rawset(env, "__currenthost", name);
 			-- Needs at least one setting to logically exist :)
 			set(name or "*", "core", "defined", true);
+			return function (config_options)
+				rawset(env, "__currenthost", "*"); -- Return to global scope
+				for option_name, option_value in pairs(config_options) do
+					set(name or "*", "core", option_name, option_value);
+				end
+			end;
 		end
 		env.Host, env.host = env.VirtualHost, env.VirtualHost;
 		
@@ -149,11 +155,19 @@
 			-- Don't load the global modules by default
 			set(name, "core", "load_global_modules", false);
 			rawset(env, "__currenthost", name);
+			local function handle_config_options(config_options)
+				rawset(env, "__currenthost", "*"); -- Return to global scope
+				for option_name, option_value in pairs(config_options) do
+					set(name or "*", "core", option_name, option_value);
+				end
+			end
 	
 			return function (module)
 					if type(module) == "string" then
 						set(name, "core", "component_module", module);
+						return handle_config_options;
 					end
+					return handle_config_options(module);
 				end
 		end
 		env.component = env.Component;