add compile_to_lua helper function

This commit is contained in:
leaf corcoran
2014-02-01 12:36:38 -08:00
parent 9fd6d7af0f
commit e81c4e4399
3 changed files with 24 additions and 0 deletions

View File

@@ -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 = ..."

View File

@@ -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

View File

@@ -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 }