| 66 table.insert(compile_template_to_table(result, data, start_lua, end_lua), |
66 table.insert(compile_template_to_table(result, data, start_lua, end_lua), |
| 67 "end") |
67 "end") |
| 68 return table.concat(result) |
68 return table.concat(result) |
| 69 end |
69 end |
| 70 |
70 |
| |
71 local function compile_template_as_chunk(data, start_lua, end_lua) |
| |
72 local result = { "local output = ... " } |
| |
73 return |
| |
74 table.concat(compile_template_to_table(result, data, start_lua, end_lua)) |
| |
75 end |
| |
76 |
| 71 local function compile_template(data, start_lua, end_lua) |
77 local function compile_template(data, start_lua, end_lua) |
| 72 return |
78 return table.concat(compile_template_to_table({ }, data, start_lua, end_lua)) |
| 73 table.concat(compile_template_to_table({ }, data, start_lua, end_lua)) |
|
| 74 end |
79 end |
| 75 |
80 |
| 76 local function load_template(data, start_lua, end_lua) |
81 local function load_template(data, start_lua, end_lua) |
| 77 return |
82 return assert(load(compile_template_as_chunk(data, start_lua, end_lua), |
| 78 assert(loadstring(compile_template_as_function(data, start_lua, end_lua), |
83 "=(load)")) |
| 79 "=(load)"))() |
|
| 80 end |
84 end |
| 81 |
85 |
| 82 local function execute_template(template, environment, output) |
86 local function execute_template(template, environment, output) |
| 83 setfenv(template, environment)(output) |
87 setfenv(template, environment)(output) |
| 84 end |
88 end |
| 128 return table.concat(output) |
132 return table.concat(output) |
| 129 end |
133 end |
| 130 |
134 |
| 131 local function execute_env_code(env_code, environment) |
135 local function execute_env_code(env_code, environment) |
| 132 for i = 1,#env_code do |
136 for i = 1,#env_code do |
| 133 local fun, emsg = loadstring(env_code[i]) |
137 local fun, emsg = load(env_code[i]) |
| 134 |
138 |
| 135 if fun then |
139 if fun then |
| 136 setfenv(fun, environment)() |
140 setfenv(fun, environment)() |
| 137 else |
141 else |
| 138 error("error loading " .. env_code[i] .. "\n" .. emsg) |
142 error("error loading " .. env_code[i] .. "\n" .. emsg) |
| 174 end |
178 end |
| 175 |
179 |
| 176 return ltp.merge_table( |
180 return ltp.merge_table( |
| 177 { |
181 { |
| 178 compile_template_to_table = compile_template_to_table, |
182 compile_template_to_table = compile_template_to_table, |
| |
183 compile_template_as_chunk = compile_template_as_chunk, |
| 179 compile_template_as_function = compile_template_as_function, |
184 compile_template_as_function = compile_template_as_function, |
| 180 compile_template = compile_template, |
185 compile_template = compile_template, |
| 181 load_template = load_template, |
186 load_template = load_template, |
| 182 execute_template = execute_template, |
187 execute_template = execute_template, |
| 183 basic_environment = basic_environment, |
188 basic_environment = basic_environment, |