mirror of
https://github.com/TangentFoxy/etlua.git
synced 2025-07-27 18:42:17 +00:00
add compile_to_lua helper function
This commit is contained in:
@@ -264,6 +264,13 @@ do
|
||||
setfenv(fn, combined_env)
|
||||
return fn(buffer, #buffer, tostring, concat, html_escape)
|
||||
end,
|
||||
compile_to_lua = function(self, str)
|
||||
local success, err = self:parse(str)
|
||||
if not (success) then
|
||||
return nil, err
|
||||
end
|
||||
return self:chunks_to_lua()
|
||||
end,
|
||||
chunks_to_lua = function(self)
|
||||
local buffer = {
|
||||
"local _b, _b_i, _tostring, _concat, _escape = ..."
|
||||
|
@@ -199,6 +199,11 @@ class Parser
|
||||
setfenv fn, combined_env
|
||||
fn buffer, #buffer, tostring, concat, html_escape
|
||||
|
||||
compile_to_lua: (str) =>
|
||||
success, err = @parse str
|
||||
return nil, err unless success
|
||||
@chunks_to_lua!
|
||||
|
||||
-- generates the code of the template
|
||||
chunks_to_lua: =>
|
||||
-- todo: find a no-conflict name for locals
|
||||
|
@@ -112,6 +112,18 @@ This is my message to <%= [=[oh yeah %>"]=] %>]]
|
||||
out = fn {}, buff
|
||||
assert.same "firsthelloyeah", out
|
||||
|
||||
it "should compile readme example", ->
|
||||
parser = Parser!
|
||||
|
||||
first_fn = parser\load parser\compile_to_lua "Hello "
|
||||
second_fn = parser\load parser\compile_to_lua "World"
|
||||
|
||||
buffer = {}
|
||||
parser\run first_fn, nil, buffer
|
||||
parser\run second_fn, nil, buffer
|
||||
|
||||
assert.same "Hello World", table.concat buffer
|
||||
|
||||
describe "Parser.in_string", ->
|
||||
cases = {
|
||||
{ "hello world", false }
|
||||
|
Reference in New Issue
Block a user