webmcp
changeset 262:c3d539e33710
Replaced request.add_initializer(...) and request.add_variable(...) with request.for_each(...) and request.configure(...) which both execute the passed function once in any case when being called
author | jbe |
---|---|
date | Tue Mar 17 11:42:34 2015 +0100 (2015-03-17) |
parents | 343f9af7f61f |
children | b0f5e7955ffd |
files | framework/env/charset/__init.lua framework/env/charset/set.lua framework/env/locale/__init.lua framework/env/locale/do_with.lua framework/env/locale/set.lua framework/env/param/__init.lua framework/env/request/__init.lua framework/env/request/add_header.lua framework/env/request/add_initializer.lua framework/env/request/add_variable.lua framework/env/request/configure.lua framework/env/request/for_each.lua framework/env/request/force_absolute_baseurl.lua framework/env/request/handler.lua framework/env/request/set_404_route.lua framework/env/request/set_perm_param.lua framework/env/slot/__init.lua framework/env/slot/set_layout.lua |
line diff
1.1 --- a/framework/env/charset/__init.lua Mon Mar 16 23:21:18 2015 +0100 1.2 +++ b/framework/env/charset/__init.lua Tue Mar 17 11:42:34 2015 +0100 1.3 @@ -1,1 +1,3 @@ 1.4 -request.add_variable(charset, "_current", "UTF-8") 1.5 +request.for_each(function() 1.6 + charset._current = "UTF-8" 1.7 +end)
2.1 --- a/framework/env/charset/set.lua Mon Mar 16 23:21:18 2015 +0100 2.2 +++ b/framework/env/charset/set.lua Tue Mar 17 11:42:34 2015 +0100 2.3 @@ -8,5 +8,7 @@ 2.4 --]]-- 2.5 2.6 function charset.set(charset_ident) 2.7 - charset._current = charset_ident 2.8 + request.configure(function() 2.9 + charset._current = charset_ident 2.10 + end) 2.11 end
3.1 --- a/framework/env/locale/__init.lua Mon Mar 16 23:21:18 2015 +0100 3.2 +++ b/framework/env/locale/__init.lua Tue Mar 17 11:42:34 2015 +0100 3.3 @@ -1,4 +1,6 @@ 3.4 -request.add_variable(locale, "_current_data", {}) 3.5 locale._translation_tables = {} 3.6 locale._empty_translation_table = {} 3.7 3.8 +request.for_each(function() 3.9 + locale._current_data = {} 3.10 +end)
4.1 --- a/framework/env/locale/do_with.lua Mon Mar 16 23:21:18 2015 +0100 4.2 +++ b/framework/env/locale/do_with.lua Tue Mar 17 11:42:34 2015 +0100 4.3 @@ -11,12 +11,16 @@ 4.4 --]]-- 4.5 4.6 function locale.do_with(locale_options, block) 4.7 - local old_data = {} 4.8 - for key, value in pairs(locale._current_data) do 4.9 - old_data[key] = value 4.10 + local old_data = table.new(locale._current_data) 4.11 + if locale_options.reset then 4.12 + locale._current_data = {} 4.13 + end 4.14 + for key, value in pairs(locale_options) do 4.15 + if key ~= "reset" then 4.16 + locale._current_data[key] = value 4.17 + end 4.18 end 4.19 locale.set(locale_options) 4.20 block() 4.21 - old_data.reset = true 4.22 - locale.set(old_data) 4.23 + locale._current_data = old_data 4.24 end
5.1 --- a/framework/env/locale/set.lua Mon Mar 16 23:21:18 2015 +0100 5.2 +++ b/framework/env/locale/set.lua Tue Mar 17 11:42:34 2015 +0100 5.3 @@ -8,12 +8,14 @@ 5.4 --]]-- 5.5 5.6 function locale.set(locale_options) 5.7 - if locale_options.reset then 5.8 - locale._current_data = {} 5.9 - end 5.10 - for key, value in pairs(locale_options) do 5.11 - if key ~= "reset" then 5.12 - locale._current_data[key] = value 5.13 + request.configure(function() 5.14 + if locale_options.reset then 5.15 + locale._current_data = {} 5.16 end 5.17 - end 5.18 + for key, value in pairs(locale_options) do 5.19 + if key ~= "reset" then 5.20 + locale._current_data[key] = value 5.21 + end 5.22 + end 5.23 + end) 5.24 end
6.1 --- a/framework/env/param/__init.lua Mon Mar 16 23:21:18 2015 +0100 6.2 +++ b/framework/env/param/__init.lua Tue Mar 17 11:42:34 2015 +0100 6.3 @@ -1,4 +1,4 @@ 6.4 -request.add_initializer(function() 6.5 +request.for_each(function() 6.6 param._exchanged = false -- important to be false, not nil 6.7 param._saved = {} -- stack 6.8 end)
7.1 --- a/framework/env/request/__init.lua Mon Mar 16 23:21:18 2015 +0100 7.2 +++ b/framework/env/request/__init.lua Tue Mar 17 11:42:34 2015 +0100 7.3 @@ -5,18 +5,20 @@ 7.4 request._absolute_baseurl = nil 7.5 request._http_options = {} 7.6 7.7 --- initialize once and re-initialize per request 7.8 -request.add_variable(request, "_response_headers", {}) 7.9 -request.add_variable(request, "_force_absolute_baseurl", false) 7.10 -request.add_variable(request, "_perm_params", {}) 7.11 -request.add_variable(request, "_404_route", nil) 7.12 +request.for_each(function() 7.13 7.14 --- initialize per request 7.15 -request.add_initializer(function() 7.16 + -- configurable 7.17 + request._response_headers = {} 7.18 + request._force_absolute_baseurl = false 7.19 + request._perm_params = {} 7.20 + request._404_route = nil 7.21 + 7.22 + -- non-configurable 7.23 request._http_request = nil 7.24 request._status = nil 7.25 request._forward = nil 7.26 request._forward_processed = false 7.27 request._redirect = nil 7.28 request._csrf_secret = nil 7.29 + 7.30 end)
8.1 --- a/framework/env/request/add_header.lua Mon Mar 16 23:21:18 2015 +0100 8.2 +++ b/framework/env/request/add_header.lua Tue Mar 17 11:42:34 2015 +0100 8.3 @@ -2,5 +2,8 @@ 8.4 if value == nil then 8.5 error("Function request.add_header(...) requires two arguments") 8.6 end 8.7 - request._response_headers[#request._response_headers+1] = {key, value} 8.8 + request.configure(function() 8.9 + local headers = request._response_headers 8.10 + headers[#headers+1] = {key, value} 8.11 + end) 8.12 end
9.1 --- a/framework/env/request/add_initializer.lua Mon Mar 16 23:21:18 2015 +0100 9.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 9.3 @@ -1,16 +0,0 @@ 9.4 ---[[-- 9.5 -request.add_initializer( 9.6 - func -- function to be called on every request 9.7 -) 9.8 - 9.9 -Registers a function to be called on every request. This mechanism can be used for __init.lua files in the environment to perform a per-request initialization. See env/request/__init.lua for an example. 9.10 - 9.11 ---]]-- 9.12 - 9.13 -function request.add_initializer(func) 9.14 - local initializers = request._initializers 9.15 - initializers[#initializers+1] = func 9.16 - if request._in_progress then 9.17 - func(true) 9.18 - end 9.19 -end
10.1 --- a/framework/env/request/add_variable.lua Mon Mar 16 23:21:18 2015 +0100 10.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 10.3 @@ -1,27 +0,0 @@ 10.4 ---[[-- 10.5 -request.add_variable( 10.6 - tbl, -- table where the variable is stored 10.7 - key, -- name of variable (key within the table) 10.8 - value -- optional value for initialization 10.9 -) 10.10 - 10.11 -Marks a field of a table to be re-initialized for every request. If this variable (i.e. the field of the table) is modified before the first requst is being handled (e.g. during configuration or pre-/post-fork initializers), then the modified value will be used for re-initialization on every request. If the (modified) value is a table, the table will be cloned on every request to avoid side-effects between different requests. Note, however, that only the first level of the table is cloned. See env/request/__init.lua for examples. 10.12 - 10.13 ---]]-- 10.14 - 10.15 -function request.add_variable(tbl, key, value) 10.16 - local initval, istable 10.17 - tbl[key] = value 10.18 - request.add_initializer(function(first) 10.19 - if first then 10.20 - initval = tbl[key] 10.21 - istable = type(initval) == "table" 10.22 - else 10.23 - if istable then 10.24 - tbl[key] = table.new(initval) 10.25 - else 10.26 - tbl[key] = initval 10.27 - end 10.28 - end 10.29 - end) 10.30 -end
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 11.2 +++ b/framework/env/request/configure.lua Tue Mar 17 11:42:34 2015 +0100 11.3 @@ -0,0 +1,16 @@ 11.4 +--[[-- 11.5 +request.configure( 11.6 + func -- function which is performing the configuration 11.7 +) 11.8 + 11.9 +Registers a function to be called on every request only if a request is not in progress yet. Executes the function once in any case. 11.10 + 11.11 +--]]-- 11.12 + 11.13 +function request.configure(func) 11.14 + if not request._in_progress then 11.15 + local initializers = request._initializers 11.16 + initializers[#initializers+1] = func 11.17 + end 11.18 + func() 11.19 +end
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 12.2 +++ b/framework/env/request/for_each.lua Tue Mar 17 11:42:34 2015 +0100 12.3 @@ -0,0 +1,14 @@ 12.4 +--[[-- 12.5 +request.for_each( 12.6 + func -- function to be called on every request 12.7 +) 12.8 + 12.9 +Registers a function to be called on every request and executes it once. This mechanism can be used for __init.lua files in the environment to perform a per-request initialization. See env/request/__init.lua for an example. 12.10 + 12.11 +--]]-- 12.12 + 12.13 +function request.for_each(func) 12.14 + local initializers = request._initializers 12.15 + initializers[#initializers+1] = func 12.16 + func() 12.17 +end
13.1 --- a/framework/env/request/force_absolute_baseurl.lua Mon Mar 16 23:21:18 2015 +0100 13.2 +++ b/framework/env/request/force_absolute_baseurl.lua Tue Mar 17 11:42:34 2015 +0100 13.3 @@ -6,5 +6,7 @@ 13.4 --]]-- 13.5 13.6 function request.force_absolute_baseurl() 13.7 - request._force_absolute_baseurl = true 13.8 + request.configure(function() 13.9 + request._force_absolute_baseurl = true 13.10 + end 13.11 end
14.1 --- a/framework/env/request/handler.lua Mon Mar 16 23:21:18 2015 +0100 14.2 +++ b/framework/env/request/handler.lua Tue Mar 17 11:42:34 2015 +0100 14.3 @@ -21,10 +21,9 @@ 14.4 function request.handler(http_request) 14.5 _G.app = {} -- may be overwritten or modified by request initializers 14.6 do 14.7 - local first = not request._in_progress 14.8 request._in_progress = true -- NOTE: must be set to true before initializer functions are called 14.9 for i, func in ipairs(request._initializers) do 14.10 - func(first) 14.11 + func() 14.12 end 14.13 end 14.14
15.1 --- a/framework/env/request/set_404_route.lua Mon Mar 16 23:21:18 2015 +0100 15.2 +++ b/framework/env/request/set_404_route.lua Tue Mar 17 11:42:34 2015 +0100 15.3 @@ -9,5 +9,7 @@ 15.4 --]]-- 15.5 15.6 function request.set_404_route(tbl) 15.7 - request._404_route = tbl 15.8 + request.configure(function() 15.9 + request._404_route = tbl -- TODO: clone? 15.10 + end) 15.11 end
16.1 --- a/framework/env/request/set_perm_param.lua Mon Mar 16 23:21:18 2015 +0100 16.2 +++ b/framework/env/request/set_perm_param.lua Tue Mar 17 11:42:34 2015 +0100 16.3 @@ -9,5 +9,7 @@ 16.4 --]]-- 16.5 16.6 function request.set_perm_param(name, value) 16.7 - request._perm_params[name] = value 16.8 + request.configure(function() 16.9 + request._perm_params[name] = value 16.10 + end) 16.11 end
17.1 --- a/framework/env/slot/__init.lua Mon Mar 16 23:21:18 2015 +0100 17.2 +++ b/framework/env/slot/__init.lua Tue Mar 17 11:42:34 2015 +0100 17.3 @@ -1,8 +1,9 @@ 17.4 -request.add_variable(slot, "_active_slot", "default") 17.5 -request.add_variable(slot, "_current_layout", "default") 17.6 -request.add_variable(slot, "_content_type", nil) 17.7 +request.for_each(function() 17.8 17.9 -request.add_initializer(function() 17.10 + slot._active_slot = "default" 17.11 + 17.12 + slot._current_layout = "default" 17.13 + slot._content_type = nil 17.14 17.15 slot._data = nil 17.16 slot.reset_all()
18.1 --- a/framework/env/slot/set_layout.lua Mon Mar 16 23:21:18 2015 +0100 18.2 +++ b/framework/env/slot/set_layout.lua Tue Mar 17 11:42:34 2015 +0100 18.3 @@ -9,6 +9,8 @@ 18.4 --]]-- 18.5 18.6 function slot.set_layout(layout_ident, content_type) 18.7 - slot._current_layout = layout_ident 18.8 - slot._content_type = content_type 18.9 + request.configure(function() 18.10 + slot._current_layout = layout_ident 18.11 + slot._content_type = content_type 18.12 + end) 18.13 end