webmcp
annotate framework/env/execute/_initializers.lua @ 363:1d850c6688b6
New release of v2.0.2 because tar.gz file of v2.0.1 did not contain Makefile.options
| author | jbe | 
|---|---|
| date | Sun Mar 29 15:21:54 2015 +0200 (2015-03-29) | 
| parents | a2c733535b8e | 
| children | beb1e7925a52 | 
| rev | line source | 
|---|---|
| jbe@214 | 1 function execute._initializers(initializer_path_element) | 
| jbe@277 | 2 local yieldvalue1 = {} | 
| jbe@277 | 3 local yieldvalue2 = {} | 
| jbe@214 | 4 local coro = coroutine.wrap(function() | 
| jbe@214 | 5 execute.multi_wrapped( | 
| jbe@214 | 6 execute._create_sorted_execution_list( | 
| jbe@214 | 7 function(add_by_path) | 
| jbe@214 | 8 add_by_path(initializer_path_element) | 
| jbe@316 | 9 add_by_path(WEBMCP_APP_NAME, initializer_path_element) | 
| jbe@214 | 10 end, | 
| jbe@214 | 11 function(full_path, relative_path) | 
| jbe@214 | 12 execute.file_path{ file_path = full_path } | 
| jbe@214 | 13 end | 
| jbe@214 | 14 ), | 
| jbe@214 | 15 function() | 
| jbe@277 | 16 coroutine.yield(yieldvalue1) | 
| jbe@214 | 17 end | 
| jbe@214 | 18 ) | 
| jbe@277 | 19 return yieldvalue2 | 
| jbe@214 | 20 end) | 
| jbe@277 | 21 local yieldvalue = coro() | 
| jbe@277 | 22 if yieldvalue == yieldvalue2 then | 
| jbe@277 | 23 error("Initializers failed to call execute.inner()") | 
| jbe@277 | 24 elseif yieldvalue ~= yieldvalue1 then | 
| jbe@277 | 25 error("Unexpected yield in initializers") | 
| jbe@214 | 26 end | 
| jbe@277 | 27 execute._finalizers[#execute._finalizers+1] = function() | 
| jbe@277 | 28 assert(coro() == yieldvalue2, "Unexpected yield in finalizers") | 
| jbe@277 | 29 end | 
| jbe@214 | 30 end |