mirror of
https://github.com/TangentFoxy/etlua.git
synced 2025-07-28 11:02:17 +00:00
add compile_to_lua helper function
This commit is contained in:
@@ -264,6 +264,13 @@ do
|
|||||||
setfenv(fn, combined_env)
|
setfenv(fn, combined_env)
|
||||||
return fn(buffer, #buffer, tostring, concat, html_escape)
|
return fn(buffer, #buffer, tostring, concat, html_escape)
|
||||||
end,
|
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)
|
chunks_to_lua = function(self)
|
||||||
local buffer = {
|
local buffer = {
|
||||||
"local _b, _b_i, _tostring, _concat, _escape = ..."
|
"local _b, _b_i, _tostring, _concat, _escape = ..."
|
||||||
|
@@ -199,6 +199,11 @@ class Parser
|
|||||||
setfenv fn, combined_env
|
setfenv fn, combined_env
|
||||||
fn buffer, #buffer, tostring, concat, html_escape
|
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
|
-- generates the code of the template
|
||||||
chunks_to_lua: =>
|
chunks_to_lua: =>
|
||||||
-- todo: find a no-conflict name for locals
|
-- todo: find a no-conflict name for locals
|
||||||
|
@@ -112,6 +112,18 @@ This is my message to <%= [=[oh yeah %>"]=] %>]]
|
|||||||
out = fn {}, buff
|
out = fn {}, buff
|
||||||
assert.same "firsthelloyeah", out
|
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", ->
|
describe "Parser.in_string", ->
|
||||||
cases = {
|
cases = {
|
||||||
{ "hello world", false }
|
{ "hello world", false }
|
||||||
|
Reference in New Issue
Block a user