Permalink
Browse files

change how values are passed to compiled template, require a buffer p…

…os if passing buffer
  • Loading branch information...
1 parent 443f4ad commit 3c68088308c64ad1b174d01e72e0be391c4ff1a6 @leafo committed Feb 7, 2014
Showing with 12 additions and 8 deletions.
  1. +2 −2 README.md
  2. +7 −3 etlua.moon
  3. +3 −3 spec/etlua_spec.moon
View
@@ -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
@@ -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
@@ -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

0 comments on commit 3c68088

Please sign in to comment.