diff --git a/compiler/HtmlJsParser.js b/compiler/HtmlJsParser.js
index 4ea035c24..20f9ad9a5 100644
--- a/compiler/HtmlJsParser.js
+++ b/compiler/HtmlJsParser.js
@@ -4,71 +4,75 @@ var htmljs = require('htmljs-parser');
class HtmlJsParser {
parse(src, handlers) {
var listeners = {
- ontext(event) {
- handlers.handleCharacters(event.text);
+ onText(event) {
+ handlers.handleCharacters(event.value);
},
- oncontentplaceholder(event) {
- // placeholder within content
- handlers.handleBodyTextPlaceholder(event.expression, event.escape);
- },
-
- onnestedcontentplaceholder(event) {
- // placeholder within string that is within content placeholder
- },
-
- onattributeplaceholder(event) {
- // placeholder within attribute
- if (event.escape) {
- event.expression = '$escapeXml(' + event.expression + ')';
+ onPlaceholder(event) {
+ if (event.withinBody) {
+ if (!event.withinString) {
+ handlers.handleBodyTextPlaceholder(event.value, event.escape);
+ }
+ } else if (event.withinOpenTag) {
+ // Don't escape placeholder for dynamic attributes. For example:
} else {
- event.expression = '$noEscapeXml(' + event.expression + ')';
+ // placeholder within attribute
+ if (event.escape) {
+ event.value = '$escapeXml(' + event.value + ')';
+ } else {
+ event.value = '$noEscapeXml(' + event.value + ')';
+ }
+ }
+ // placeholder within content
+
+ },
+
+ onCDATA(event) {
+ handlers.handleCharacters(event.value);
+ },
+
+ onOpenTag(event, parser) {
+ event.selfClosed = false; // Don't allow self-closed tags
+ handlers.handleStartElement(event);
+
+ var newParserState = handlers.getParserStateForTag(event);
+ if (newParserState) {
+ if (newParserState === 'parsed-text') {
+ parser.enterParsedTextContentState();
+ } else if (newParserState === 'static-text') {
+ parser.enterStaticTextContentState();
+ }
}
},
- oncdata(event) {
- handlers.handleCharacters(event.text);
- },
-
- onopentag(event) {
- handlers.handleStartElement(event);
- },
-
- onclosetag(event) {
+ onCloseTag(event) {
var tagName = event.tagName;
handlers.handleEndElement(tagName);
},
- ondtd(event) {
- // DTD (e.g. )
- handlers.handleCharacters(event.dtd);
+ onDocumentType(event) {
+
+ // Document type: ""
+ handlers.handleCharacters('');
},
- ondeclaration(event) {
+ onDeclaration(event) {
// Declaration (e.g. )
- handlers.handleCharacters(event.declaration);
+ handlers.handleCharacters('' + event.value + '?>');
},
- oncomment(event) {
+ onComment(event) {
// Text within XML comment
- handlers.handleComment(event.comment);
+ handlers.handleComment(event.value);
},
- onerror(event) {
+ onError(event) {
handlers.handleError(event);
}
};
- var options = {
- parserStateProvider(event) {
- if (event.type === 'opentag') {
- return handlers.getParserStateForTag(event);
- }
- }
- };
-
- var parser = this.parser = htmljs.createParser(listeners, options);
-
+ var parser = this.parser = htmljs.createParser(listeners);
parser.parse(src);
}
}
diff --git a/compiler/Parser.js b/compiler/Parser.js
index 9ba014f01..80c1a0b86 100644
--- a/compiler/Parser.js
+++ b/compiler/Parser.js
@@ -64,7 +64,6 @@ class Parser {
} else {
var escape = false;
this.prevTextNode = builder.text(builder.literal(text), escape);
- this.prevTextNode.pos = text.pos;
this.parentNode.appendChild(this.prevTextNode);
}
}
@@ -77,6 +76,10 @@ class Parser {
var attributes = el.attributes;
var argument = el.argument; // e.g. For , argument will be "color in colors"
+ if (argument) {
+ argument = argument.value;
+ }
+
if (tagName === 'compiler-options') {
attributes.forEach(function (attr) {
let attrName = attr.name;
@@ -117,11 +120,12 @@ class Parser {
name: attr.name,
value: isLiteral ?
builder.literal(attr.literalValue) :
- attr.expression == null ? undefined : builder.parseExpression(attr.expression)
+ attr.value == null ? undefined : builder.parseExpression(attr.value)
};
if (attr.argument) {
- attrDef.argument = attr.argument;
+ // TODO Do something with the argument pos
+ attrDef.argument = attr.argument.value;
}
return attrDef;
diff --git a/package.json b/package.json
index a38488be4..c2b463600 100644
--- a/package.json
+++ b/package.json
@@ -30,7 +30,7 @@
"char-props": "~0.1.5",
"esprima": "^2.7.0",
"events": "^1.0.2",
- "htmljs-parser": "^1.0.6",
+ "htmljs-parser": "^1.3.0",
"jsonminify": "^0.2.3",
"minimatch": "^0.2.14",
"property-handlers": "^1.0.0",
diff --git a/test/fixtures/render/autotest-pending/nested-handlers/expected.html b/test/fixtures/render/autotest-pending/nested-handlers/expected.html
deleted file mode 100644
index 1ac2c90a8..000000000
--- a/test/fixtures/render/autotest-pending/nested-handlers/expected.html
+++ /dev/null
@@ -1 +0,0 @@
-Tab 1 content
Tab 2 content
Tab 1 content
Tab 2 content
\ No newline at end of file
diff --git a/test/fixtures/render/autotest-pending/nested-handlers/template.marko b/test/fixtures/render/autotest-pending/nested-handlers/template.marko
deleted file mode 100644
index 29f1bda78..000000000
--- a/test/fixtures/render/autotest-pending/nested-handlers/template.marko
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
- Tab 1 content
-
-
-
- Tab 2 content
-
-
-
- Tab 3 content
-
-
-
-
-
- Tab 1 content
-
-
-
- Tab 2 content
-
-
-
- Tab 3 content
-
-
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/body-placeholder-literal/template.marko b/test/fixtures/render/autotest/body-placeholder-literal/template.marko
index b3b2fd5d9..d80e71e5e 100644
--- a/test/fixtures/render/autotest/body-placeholder-literal/template.marko
+++ b/test/fixtures/render/autotest/body-placeholder-literal/template.marko
@@ -1 +1 @@
-A ${'B'} C
\ No newline at end of file
+- A ${'B'} C
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/body-placeholder-literal2/template.marko b/test/fixtures/render/autotest/body-placeholder-literal2/template.marko
index 8d914287e..8bf75fc00 100644
--- a/test/fixtures/render/autotest/body-placeholder-literal2/template.marko
+++ b/test/fixtures/render/autotest/body-placeholder-literal2/template.marko
@@ -1 +1,3 @@
- A ${'B'} C
\ No newline at end of file
+---
+ A ${'B'} C
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/comments-remove/template.marko b/test/fixtures/render/autotest/comments-remove/template.marko
index dea7d3e4d..995319beb 100644
--- a/test/fixtures/render/autotest/comments-remove/template.marko
+++ b/test/fixtures/render/autotest/comments-remove/template.marko
@@ -1,3 +1,3 @@
-Hello World!
+- Hello World!
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/compiler-option-preserve-whitespace/template.marko b/test/fixtures/render/autotest/compiler-option-preserve-whitespace/template.marko
index 22ef22120..54fcf26ca 100644
--- a/test/fixtures/render/autotest/compiler-option-preserve-whitespace/template.marko
+++ b/test/fixtures/render/autotest/compiler-option-preserve-whitespace/template.marko
@@ -1,4 +1,6 @@
+---
A
B
C
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/div-self-closed/expected.html b/test/fixtures/render/autotest/div-self-closed/expected.html
new file mode 100644
index 000000000..99ed594ea
--- /dev/null
+++ b/test/fixtures/render/autotest/div-self-closed/expected.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/div-self-closed/template.marko b/test/fixtures/render/autotest/div-self-closed/template.marko
new file mode 100644
index 000000000..f82d79e45
--- /dev/null
+++ b/test/fixtures/render/autotest/div-self-closed/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/div-self-closed/test.js b/test/fixtures/render/autotest/div-self-closed/test.js
new file mode 100644
index 000000000..c4013b344
--- /dev/null
+++ b/test/fixtures/render/autotest/div-self-closed/test.js
@@ -0,0 +1 @@
+exports.templateData = {};
diff --git a/test/fixtures/render/autotest/dtd/expected.html b/test/fixtures/render/autotest/dtd/expected.html
new file mode 100644
index 000000000..5b0af7d1b
--- /dev/null
+++ b/test/fixtures/render/autotest/dtd/expected.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/dtd/template.marko b/test/fixtures/render/autotest/dtd/template.marko
new file mode 100644
index 000000000..5b0af7d1b
--- /dev/null
+++ b/test/fixtures/render/autotest/dtd/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/dtd/test.js b/test/fixtures/render/autotest/dtd/test.js
new file mode 100644
index 000000000..c4013b344
--- /dev/null
+++ b/test/fixtures/render/autotest/dtd/test.js
@@ -0,0 +1 @@
+exports.templateData = {};
diff --git a/test/fixtures/render/autotest/entities/template.marko b/test/fixtures/render/autotest/entities/template.marko
index 651f2f12b..06b3c1283 100644
--- a/test/fixtures/render/autotest/entities/template.marko
+++ b/test/fixtures/render/autotest/entities/template.marko
@@ -1,4 +1,4 @@
">
Hello <John>© ]]>
-©
\ No newline at end of file
+- ©
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/error-invalid-attr/template.marko b/test/fixtures/render/autotest/error-invalid-attr/template.marko
index e99a833ff..0a3ea4ae4 100644
--- a/test/fixtures/render/autotest/error-invalid-attr/template.marko
+++ b/test/fixtures/render/autotest/error-invalid-attr/template.marko
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/error-missing-required-attr/template.marko b/test/fixtures/render/autotest/error-missing-required-attr/template.marko
index 0146dd95c..05d436300 100644
--- a/test/fixtures/render/autotest/error-missing-required-attr/template.marko
+++ b/test/fixtures/render/autotest/error-missing-required-attr/template.marko
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/global-data/template.marko b/test/fixtures/render/autotest/global-data/template.marko
index 362ec32fe..511f099dc 100644
--- a/test/fixtures/render/autotest/global-data/template.marko
+++ b/test/fixtures/render/autotest/global-data/template.marko
@@ -1 +1 @@
-Global: ${out.global.foo}
\ No newline at end of file
+- Global: ${out.global.foo}
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/hello-dynamic/template.marko b/test/fixtures/render/autotest/hello-dynamic/template.marko
index 67534a91f..e9fff3b74 100644
--- a/test/fixtures/render/autotest/hello-dynamic/template.marko
+++ b/test/fixtures/render/autotest/hello-dynamic/template.marko
@@ -1 +1 @@
-Hello ${data.name}! Hello $!{data.name}! Hello $!{data.missing}!
\ No newline at end of file
+- Hello ${data.name}! Hello $!{data.name}! Hello $!{data.missing}!
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/hello-static/template.marko b/test/fixtures/render/autotest/hello-static/template.marko
index 49fe4fe8a..f1a2fd283 100644
--- a/test/fixtures/render/autotest/hello-static/template.marko
+++ b/test/fixtures/render/autotest/hello-static/template.marko
@@ -1 +1 @@
-Hello John
\ No newline at end of file
+- Hello John
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/if/expected.html b/test/fixtures/render/autotest/if/expected.html
new file mode 100644
index 000000000..8c7e5a667
--- /dev/null
+++ b/test/fixtures/render/autotest/if/expected.html
@@ -0,0 +1 @@
+A
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/if/template.marko b/test/fixtures/render/autotest/if/template.marko
new file mode 100644
index 000000000..ee3d3fd97
--- /dev/null
+++ b/test/fixtures/render/autotest/if/template.marko
@@ -0,0 +1,3 @@
+
+ A
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/if/test.js b/test/fixtures/render/autotest/if/test.js
new file mode 100644
index 000000000..c4013b344
--- /dev/null
+++ b/test/fixtures/render/autotest/if/test.js
@@ -0,0 +1 @@
+exports.templateData = {};
diff --git a/test/fixtures/render/autotest/layout-use-data-attrs/template.marko b/test/fixtures/render/autotest/layout-use-data-attrs/template.marko
index ead25b5f3..c612ad3d8 100644
--- a/test/fixtures/render/autotest/layout-use-data-attrs/template.marko
+++ b/test/fixtures/render/autotest/layout-use-data-attrs/template.marko
@@ -1,3 +1,4 @@
+-------
BODY CONTENT
FOOTER CONTENT
@@ -6,4 +7,5 @@
BODY CONTENT
FOOTER CONTENT
-
\ No newline at end of file
+
+-------
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/layout-use-data/template.marko b/test/fixtures/render/autotest/layout-use-data/template.marko
index 07c6e95eb..8f1a35df5 100644
--- a/test/fixtures/render/autotest/layout-use-data/template.marko
+++ b/test/fixtures/render/autotest/layout-use-data/template.marko
@@ -1,3 +1,4 @@
+---------
BODY CONTENT
FOOTER CONTENT
@@ -12,4 +13,5 @@
My Title
BODY CONTENT2
FOOTER CONTENT2
-
\ No newline at end of file
+
+---------
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/placeholders-body-expressions/template.marko b/test/fixtures/render/autotest/placeholders-body-expressions/template.marko
index 7c498504f..62c8f39af 100644
--- a/test/fixtures/render/autotest/placeholders-body-expressions/template.marko
+++ b/test/fixtures/render/autotest/placeholders-body-expressions/template.marko
@@ -1 +1,3 @@
-Hello ${({name: "World"}).name}!
\ No newline at end of file
+---
+Hello ${({name: "World"}).name}!
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/require/template.marko b/test/fixtures/render/autotest/require/template.marko
index 31193ddac..9d2d290ab 100644
--- a/test/fixtures/render/autotest/require/template.marko
+++ b/test/fixtures/render/autotest/require/template.marko
@@ -1,6 +1,8 @@
+---
var testHelpers = require('./test-helpers')
Hello ${testHelpers.upperCase("world")}!
-Hello ${testHelpers.trim(" World ")}!
\ No newline at end of file
+Hello ${testHelpers.trim(" World ")}!
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/tabs-tab-new/expected.html b/test/fixtures/render/autotest/tabs-tab-new/expected.html
new file mode 100644
index 000000000..312dd3a68
--- /dev/null
+++ b/test/fixtures/render/autotest/tabs-tab-new/expected.html
@@ -0,0 +1 @@
+Tab 1 content
Tab 2 content
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/tabs-tab-new/template.marko b/test/fixtures/render/autotest/tabs-tab-new/template.marko
new file mode 100644
index 000000000..928e96afc
--- /dev/null
+++ b/test/fixtures/render/autotest/tabs-tab-new/template.marko
@@ -0,0 +1,15 @@
+
+
+
+
+ Tab 1 content
+
+
+
+ Tab 2 content
+
+
+
+ Tab 3 content
+
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest-pending/nested-handlers/test.js b/test/fixtures/render/autotest/tabs-tab-new/test.js
similarity index 100%
rename from test/fixtures/render/autotest-pending/nested-handlers/test.js
rename to test/fixtures/render/autotest/tabs-tab-new/test.js
diff --git a/test/fixtures/render/autotest/tabs-tab/expected.html b/test/fixtures/render/autotest/tabs-tab/expected.html
new file mode 100644
index 000000000..312dd3a68
--- /dev/null
+++ b/test/fixtures/render/autotest/tabs-tab/expected.html
@@ -0,0 +1 @@
+Tab 1 content
Tab 2 content
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/tabs-tab/template.marko b/test/fixtures/render/autotest/tabs-tab/template.marko
new file mode 100644
index 000000000..605e74ff8
--- /dev/null
+++ b/test/fixtures/render/autotest/tabs-tab/template.marko
@@ -0,0 +1,15 @@
+
+
+
+
+ Tab 1 content
+
+
+
+ Tab 2 content
+
+
+
+ Tab 3 content
+
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/tabs-tab/test.js b/test/fixtures/render/autotest/tabs-tab/test.js
new file mode 100644
index 000000000..72d8a033a
--- /dev/null
+++ b/test/fixtures/render/autotest/tabs-tab/test.js
@@ -0,0 +1,3 @@
+exports.templateData = {
+ "showConditionalTab": false
+};
diff --git a/test/fixtures/render/autotest/tag-code-generator-return-self/expected.html b/test/fixtures/render/autotest/tag-code-generator-return-self/expected.html
index 5d2f02193..07ae43b3a 100644
--- a/test/fixtures/render/autotest/tag-code-generator-return-self/expected.html
+++ b/test/fixtures/render/autotest/tag-code-generator-return-self/expected.html
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/text-replacement/template.marko b/test/fixtures/render/autotest/text-replacement/template.marko
index 3af155405..453486856 100644
--- a/test/fixtures/render/autotest/text-replacement/template.marko
+++ b/test/fixtures/render/autotest/text-replacement/template.marko
@@ -1,3 +1,5 @@
+---
-Hello ${person.name}. You are from ${person.address.city}, ${person.address.state} Zero: ${data.zero}
\ No newline at end of file
+Hello ${person.name}. You are from ${person.address.city}, ${person.address.state} Zero: ${data.zero}
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/unless-else/template.marko b/test/fixtures/render/autotest/unless-else/template.marko
index 93e9178da..d04479dc8 100644
--- a/test/fixtures/render/autotest/unless-else/template.marko
+++ b/test/fixtures/render/autotest/unless-else/template.marko
@@ -1,3 +1,4 @@
+---
A
@@ -31,3 +32,4 @@
C
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/var-scoped/template.marko b/test/fixtures/render/autotest/var-scoped/template.marko
index 39a97edf1..19c7fbf87 100644
--- a/test/fixtures/render/autotest/var-scoped/template.marko
+++ b/test/fixtures/render/autotest/var-scoped/template.marko
@@ -3,4 +3,6 @@
${y}
${z}
-${typeof x}
\ No newline at end of file
+---
+${typeof x}
+---
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/whitespace-inline-elements/expected.html b/test/fixtures/render/autotest/whitespace-inline-elements/expected.html
index f3226e015..a106fdd77 100644
--- a/test/fixtures/render/autotest/whitespace-inline-elements/expected.html
+++ b/test/fixtures/render/autotest/whitespace-inline-elements/expected.html
@@ -1 +1 @@
-A B C
--- D E F
--- G H I
--- J
K
L M
N --- O
P
Q R
\ No newline at end of file
+A B C
--- D E F
--- G H I
--- J
K
L M
N --- O
P
Q R
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/whitespace-inline-elements/template.marko b/test/fixtures/render/autotest/whitespace-inline-elements/template.marko
index ba42a9321..52c75e9f2 100644
--- a/test/fixtures/render/autotest/whitespace-inline-elements/template.marko
+++ b/test/fixtures/render/autotest/whitespace-inline-elements/template.marko
@@ -1,3 +1,4 @@
+------
A B C
---
@@ -6,7 +7,7 @@
---
- G
+ G
H
I
@@ -15,14 +16,15 @@
J
K
L
- M
+ M
N
---
O
-
+
P
-
- Q R
-
\ No newline at end of file
+
+ Q R
+
+------
\ No newline at end of file
diff --git a/test/fixtures/render/autotest/whitespace/template.marko b/test/fixtures/render/autotest/whitespace/template.marko
index 7239b5849..00f553a21 100644
--- a/test/fixtures/render/autotest/whitespace/template.marko
+++ b/test/fixtures/render/autotest/whitespace/template.marko
@@ -1,3 +1,4 @@
+---
${"BEGIN this whitespace should be retained END"}
test
@@ -30,12 +31,4 @@ should retain spacing between l
begin end
begin end
-
\ No newline at end of file
+---
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/scanned-b/template.marko b/test/fixtures/taglib/scanned-tags/scanned-b/template.marko
index 44a949161..4a90a9116 100644
--- a/test/fixtures/taglib/scanned-tags/scanned-b/template.marko
+++ b/test/fixtures/taglib/scanned-tags/scanned-b/template.marko
@@ -1 +1,3 @@
-scanned-b: Hello ${data.name}
\ No newline at end of file
+---
+scanned-b: Hello ${data.name}
+---
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/scanned-d/template.marko b/test/fixtures/taglib/scanned-tags/scanned-d/template.marko
index 27f01b37d..222778e72 100644
--- a/test/fixtures/taglib/scanned-tags/scanned-d/template.marko
+++ b/test/fixtures/taglib/scanned-tags/scanned-d/template.marko
@@ -8,4 +8,6 @@ TAG = {
}
}
-->
-scanned-d: Hello ${data.NAME}
\ No newline at end of file
+---
+scanned-d: Hello ${data.NAME}
+---
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tab-new/marko-tag.json b/test/fixtures/taglib/scanned-tags/test-tab-new/marko-tag.json
new file mode 100644
index 000000000..fdfb634a9
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tab-new/marko-tag.json
@@ -0,0 +1,6 @@
+{
+ "import-var": {
+ "tabs": "__tabsHelper"
+ },
+ "@title": "string"
+}
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tab-new/renderer.js b/test/fixtures/taglib/scanned-tags/test-tab-new/renderer.js
new file mode 100644
index 000000000..a46c595e9
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tab-new/renderer.js
@@ -0,0 +1,4 @@
+exports.render = function(input, out) {
+ var tabs = input.tabs;
+ tabs.addTab(input);
+};
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tab/marko-tag.json b/test/fixtures/taglib/scanned-tags/test-tab/marko-tag.json
new file mode 100644
index 000000000..8d152661a
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tab/marko-tag.json
@@ -0,0 +1,6 @@
+{
+ "import-var": {
+ "tabs": "tabs"
+ },
+ "@title": "string"
+}
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tab/renderer.js b/test/fixtures/taglib/scanned-tags/test-tab/renderer.js
new file mode 100644
index 000000000..a46c595e9
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tab/renderer.js
@@ -0,0 +1,4 @@
+exports.render = function(input, out) {
+ var tabs = input.tabs;
+ tabs.addTab(input);
+};
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs-new/marko-tag.json b/test/fixtures/taglib/scanned-tags/test-tabs-new/marko-tag.json
new file mode 100644
index 000000000..869179d98
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs-new/marko-tag.json
@@ -0,0 +1,3 @@
+{
+ "body-function": "buildTabs(__tabsHelper)"
+}
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs-new/renderer.js b/test/fixtures/taglib/scanned-tags/test-tabs-new/renderer.js
new file mode 100644
index 000000000..120515ab6
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs-new/renderer.js
@@ -0,0 +1,33 @@
+var template = require('./template.marko');
+
+exports.render = function(input, out) {
+ var tabs = [],
+ activeFound = false;
+
+ if (input.buildTabs) {
+ input.buildTabs({
+ addTab: function(tab) {
+ if (tab.active) {
+ tab.activeFound = true;
+ }
+
+ tab.id = "tab" + tabs.length;
+ tabs.push(tab);
+ }
+ });
+ }
+
+ if (!activeFound && tabs.length) {
+ tabs[0].active = true;
+ }
+
+ tabs.forEach(function(tab) {
+ tab.liClass = tab.active ? "active" : "";
+ tab.divClass = tab.active ? "tab-pane active" : "tab-pane";
+ });
+
+ template.render({
+ tabs: tabs
+ }, out);
+
+};
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs-new/template.marko b/test/fixtures/taglib/scanned-tags/test-tabs-new/template.marko
new file mode 100644
index 000000000..e6d044728
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs-new/template.marko
@@ -0,0 +1,16 @@
+
+
+
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs/marko-tag.json b/test/fixtures/taglib/scanned-tags/test-tabs/marko-tag.json
new file mode 100644
index 000000000..720984466
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs/marko-tag.json
@@ -0,0 +1,3 @@
+{
+ "var": "tabs"
+}
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs/renderer.js b/test/fixtures/taglib/scanned-tags/test-tabs/renderer.js
new file mode 100644
index 000000000..e91999f2b
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs/renderer.js
@@ -0,0 +1,31 @@
+var template = require('./template.marko');
+
+exports.render = function(input, out) {
+ var tabs = [],
+ activeFound = false;
+
+ input.renderBody(out, {
+ addTab: function(tab) {
+ if (tab.active) {
+ tab.activeFound = true;
+ }
+
+ tab.id = "tab" + tabs.length;
+ tabs.push(tab);
+ }
+ });
+
+ if (!activeFound && tabs.length) {
+ tabs[0].active = true;
+ }
+
+ tabs.forEach(function(tab) {
+ tab.liClass = tab.active ? "active" : "";
+ tab.divClass = tab.active ? "tab-pane active" : "tab-pane";
+ });
+
+ template.render({
+ tabs: tabs
+ }, out);
+
+};
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-tabs/template.marko b/test/fixtures/taglib/scanned-tags/test-tabs/template.marko
new file mode 100644
index 000000000..49e49558a
--- /dev/null
+++ b/test/fixtures/taglib/scanned-tags/test-tabs/template.marko
@@ -0,0 +1,16 @@
+
+
+
\ No newline at end of file
diff --git a/test/fixtures/taglib/scanned-tags/test-template-tag-dynamic-attributes/template.marko b/test/fixtures/taglib/scanned-tags/test-template-tag-dynamic-attributes/template.marko
index 4f512183a..4a37c01d7 100644
--- a/test/fixtures/taglib/scanned-tags/test-template-tag-dynamic-attributes/template.marko
+++ b/test/fixtures/taglib/scanned-tags/test-template-tag-dynamic-attributes/template.marko
@@ -1 +1,3 @@
-Hello ${data.name}!
\ No newline at end of file
+---
+Hello ${data.name}!
+---
\ No newline at end of file
diff --git a/test/fixtures/taglib/test-template-as-tag/template.marko b/test/fixtures/taglib/test-template-as-tag/template.marko
index 4f512183a..4a37c01d7 100644
--- a/test/fixtures/taglib/test-template-as-tag/template.marko
+++ b/test/fixtures/taglib/test-template-as-tag/template.marko
@@ -1 +1,3 @@
-Hello ${data.name}!
\ No newline at end of file
+---
+Hello ${data.name}!
+---
\ No newline at end of file