change how values are passed to compiled template, require a buffer pos if passing buffer

This commit is contained in:
leaf corcoran
2014-02-06 20:10:12 -08:00
parent 443f4ad8e6
commit 3c68088308
3 changed files with 12 additions and 8 deletions

View File

@@ -138,8 +138,8 @@ 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)
parser:run(first_fn, nil, buffer, #buffer)
parser:run(second_fn, nil, buffer, #buffer)
print(table.concat(buffer)) -- print 'Hello World'
```

View File

@@ -54,7 +54,7 @@ class Compiler
@push ... if ...
header: =>
@push "local _b, _b_i, _tostring, _concat, _escape = ...\n"
@push "local _tostring, _escape, _b, _b_i = ...\n"
footer: =>
@push "return _b"
@@ -220,14 +220,18 @@ class Parser
fn
-- takes a function from @load and executes it with correct parameters
run: (fn, env={}, buffer={}) =>
run: (fn, env={}, buffer, i, ...) =>
combined_env = setmetatable {}, __index: (name) =>
val = env[name]
val = _G[name] if val == nil
val
unless buffer
buffer = {}
i = 0
setfenv fn, combined_env
fn buffer, #buffer, tostring, concat, html_escape
fn tostring, html_escape, buffer, i, ...
compile_to_lua: (str, ...) =>
success, err = @parse str

View File

@@ -109,7 +109,7 @@ This is my message to <%= [=[oh yeah %>"]=] %>]]
it "should use existing buffer", ->
fn = compile "hello<%= 'yeah' %>"
buff = {"first"}
out = fn {}, buff
out = fn {}, buff, #buff
assert.same "firsthelloyeah", out
it "should compile readme example", ->
@@ -119,8 +119,8 @@ This is my message to <%= [=[oh yeah %>"]=] %>]]
second_fn = parser\load parser\compile_to_lua "World"
buffer = {}
parser\run first_fn, nil, buffer
parser\run second_fn, nil, buffer
parser\run first_fn, nil, buffer, #buffer
parser\run second_fn, nil, buffer, #buffer
assert.same "Hello World", table.concat buffer