ltp/template.lua

changeset 6
219d7a7304f8
parent 3
b2df1b3f2c83
equal deleted inserted replaced
5:7667b101cb1e 6:219d7a7304f8
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,

mercurial