Marko v3: Added tests for onBeforeGenerateCode and onAfterGenerateCode

This commit is contained in:
Patrick Steele-Idem 2016-02-02 16:01:56 -07:00
parent 29fdb6ba5c
commit 5ebfc173f4
8 changed files with 118 additions and 0 deletions

View File

@ -0,0 +1,6 @@
if (a > b) {
before();
out.w("<div class=\"greeting\">Hello World</div>");
after();
}

View File

@ -0,0 +1,29 @@
'use strict';
module.exports = function(builder) {
var htmlElement = builder.htmlElement(
'div',
[
{
name: 'class',
value: builder.literal('greeting')
}
],
[
builder.text(builder.literal('Hello World'))
]);
htmlElement.onBeforeGenerateCode((event) => {
event.insertCode(builder.functionCall('before', []));
});
htmlElement.onAfterGenerateCode((event) => {
event.insertCode(builder.functionCall('after', []));
});
var ifStatement = builder.ifStatement('a > b', [
htmlElement
]);
return ifStatement;
};

View File

@ -0,0 +1,9 @@
if (a > b) {
var before;
before();
var foo;
after();
var after;
}

View File

@ -0,0 +1,21 @@
'use strict';
module.exports = function(builder) {
var vars = builder.vars([ 'foo' ]);
vars.onBeforeGenerateCode((event) => {
event.insertCode(builder.functionCall('before', []));
});
vars.onAfterGenerateCode((event) => {
event.insertCode(builder.functionCall('after', []));
});
var ifStatement = builder.ifStatement('a > b', [
builder.vars([ 'before' ]),
vars,
builder.vars([ 'after' ])
]);
return ifStatement;
};

View File

@ -0,0 +1,5 @@
if (a > b) {
before();
var foo;
after();
}

View File

@ -0,0 +1,19 @@
'use strict';
module.exports = function(builder) {
var vars = builder.vars([ 'foo' ]);
vars.onBeforeGenerateCode((event) => {
event.insertCode(builder.functionCall('before', []));
});
vars.onAfterGenerateCode((event) => {
event.insertCode(builder.functionCall('after', []));
});
var ifStatement = builder.ifStatement('a > b', [
vars
]);
return ifStatement;
};

View File

@ -0,0 +1,4 @@
before();
out.w("<div class=\"greeting\">Hello World</div>");
after();

View File

@ -0,0 +1,25 @@
'use strict';
module.exports = function(builder) {
var htmlElement = builder.htmlElement(
'div',
[
{
name: 'class',
value: builder.literal('greeting')
}
],
[
builder.text(builder.literal('Hello World'))
]);
htmlElement.onBeforeGenerateCode((event) => {
event.insertCode(builder.functionCall('before', []));
});
htmlElement.onAfterGenerateCode((event) => {
event.insertCode(builder.functionCall('after', []));
});
return htmlElement;
};