mirror of
https://github.com/marko-js/marko.git
synced 2025-12-08 19:26:05 +00:00
Marko v3: Added support for <html-element>
This commit is contained in:
parent
b54c9da89c
commit
241bcc7db6
@ -44,6 +44,7 @@ var ThisExpression = require('./ast/ThisExpression');
|
||||
var Expression = require('./ast/Expression');
|
||||
var parseExpression = require('./util/parseExpression');
|
||||
var parseJavaScriptArgs = require('./util/parseJavaScriptArgs');
|
||||
var removeEscapeFunctions = require('./util/removeEscapeFunctions');
|
||||
|
||||
var DEFAULT_BUILDER;
|
||||
|
||||
@ -295,9 +296,13 @@ class Builder {
|
||||
return new ObjectExpression({properties});
|
||||
}
|
||||
|
||||
parseExpression(str) {
|
||||
parseExpression(str, options) {
|
||||
ok(typeof str === 'string', '"str" should be a string expression');
|
||||
return parseExpression(str, DEFAULT_BUILDER);
|
||||
var parsed = parseExpression(str, DEFAULT_BUILDER);
|
||||
if (options && options.escapeXml === false) {
|
||||
parsed = removeEscapeFunctions(parsed);
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
|
||||
parseJavaScriptArgs(args) {
|
||||
|
||||
14
taglibs/html/html-element-tag.js
Normal file
14
taglibs/html/html-element-tag.js
Normal file
@ -0,0 +1,14 @@
|
||||
'use strict';
|
||||
|
||||
module.exports = function(elNode, codegen) {
|
||||
var tagName = elNode.argument;
|
||||
if (!tagName) {
|
||||
codegen.addError('Invalid <html-element> tag. Expected: <html-element(<tag-name-expression>) ... >');
|
||||
return;
|
||||
}
|
||||
|
||||
tagName = codegen.builder.parseExpression(tagName, { escapeXml: false });
|
||||
|
||||
elNode.setTagName(tagName);
|
||||
return elNode;
|
||||
};
|
||||
@ -2,5 +2,8 @@
|
||||
"taglib-id": "marko-html",
|
||||
"<html-comment>": {
|
||||
"renderer": "./html-comment-tag.js"
|
||||
},
|
||||
"<html-element>": {
|
||||
"code-generator": "./html-element-tag.js"
|
||||
}
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
<html-element tag-name="hello-${data.myTagName}" class="my-class" foo="bar">
|
||||
My nested content
|
||||
</html-element>
|
||||
3
test/fixtures/render/autotest/html-element-tag/template.marko
vendored
Normal file
3
test/fixtures/render/autotest/html-element-tag/template.marko
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html-element("hello-${data.myTagName}") class="my-class" foo="bar">
|
||||
My nested content
|
||||
</html-element>
|
||||
Loading…
x
Reference in New Issue
Block a user