diff --git a/compiler/Builder.js b/compiler/Builder.js index 500675c85..039236921 100644 --- a/compiler/Builder.js +++ b/compiler/Builder.js @@ -291,6 +291,10 @@ class Builder { return new ObjectExpression({properties}); } + parseExpression(str) { + return parseExpression(str); + } + program(body) { return new Program({body}); } diff --git a/taglibs/core/invoke-tag.js b/taglibs/core/invoke-tag.js new file mode 100644 index 000000000..528424ace --- /dev/null +++ b/taglibs/core/invoke-tag.js @@ -0,0 +1,20 @@ +var createLoopNode = require('./util/createLoopNode'); + +module.exports = function codeGenerator(elNode, codegen) { + var functionAttr = elNode.attributes[0]; + if (!functionAttr) { + codegen.addError('Invalid tag. Missing function attribute. Expected: tag. Missing function arguments. Expected: ": { + "code-generator": "./assign-tag" + }, "": { "node-factory": "./else-tag" }, @@ -11,6 +14,9 @@ "": { "node-factory": "./if-tag" }, + "": { + "code-generator": "./invoke-tag" + }, "": { "code-generator": "./macro-tag" }, @@ -24,9 +30,6 @@ "": { "node-factory": "./var-tag" }, - "": { - "code-generator": "./assign-tag" - }, "<*>": { "transformer": "./core-transformer" } diff --git a/test/fixtures/render/autotest-pending/invoke/expected.html b/test/fixtures/render/autotest-pending/invoke/expected.html deleted file mode 100644 index fc88a5c65..000000000 --- a/test/fixtures/render/autotest-pending/invoke/expected.html +++ /dev/null @@ -1 +0,0 @@ - A

Hello World!Hello World!

B

Hello Frank! You have 10 new messages.Hello John! You have 20 new messages.

\ No newline at end of file diff --git a/test/fixtures/render/autotest-pending/invoke/template.marko b/test/fixtures/render/autotest-pending/invoke/template.marko deleted file mode 100644 index e8436571c..000000000 --- a/test/fixtures/render/autotest-pending/invoke/template.marko +++ /dev/null @@ -1,27 +0,0 @@ -{% - function test(name) { - out.write("Hello " + name + "!"); - } -%} -{% - function test2(name) { - return "Hello " + name + "!"; - } -%} - - A - -

- - -

- - B - -

- - Hello ${name}! You have ${count} new messages. - - - -

diff --git a/test/fixtures/render/autotest/invoke/expected.html b/test/fixtures/render/autotest/invoke/expected.html new file mode 100644 index 000000000..149f2147e --- /dev/null +++ b/test/fixtures/render/autotest/invoke/expected.html @@ -0,0 +1 @@ +Hello Frank! Hello John! \ No newline at end of file diff --git a/test/fixtures/render/autotest/invoke/template.marko b/test/fixtures/render/autotest/invoke/template.marko new file mode 100644 index 000000000..ed233c451 --- /dev/null +++ b/test/fixtures/render/autotest/invoke/template.marko @@ -0,0 +1,7 @@ + +function greeting(name, out) { + out.write('Hello ' + name + '!'); +} + + + \ No newline at end of file diff --git a/test/fixtures/render/autotest-pending/invoke/test.js b/test/fixtures/render/autotest/invoke/test.js similarity index 100% rename from test/fixtures/render/autotest-pending/invoke/test.js rename to test/fixtures/render/autotest/invoke/test.js