let assert = require('assert')
+let astring = require('astring')
let transform = require('./transform')
let html_escape = require('html-escape')
prefix += '"'
}
}
+ prefix += '>'
- let expr1 = {
- type: 'Literal',
- value: prefix + '>',
- }
- expr = expr === undefined ? expr1 : {
- type: 'BinaryExpression',
- left: expr,
- operator: '+',
- right: expr1,
- }
-
- let result = [
- {
- type: 'ExpressionStatement',
- expression: {
- type: 'CallExpression',
- callee: {
- type: 'MemberExpression',
- object: {
- type: 'Identifier',
- name: '_out'
- },
- property: {
- type: 'Identifier',
- name: 'push'
+ let result = []
+ let body = c(context.body, st, 'Statement').body
+ if (tag === 'script')
+ prefix += astring.generate(
+ {
+ type: 'Program',
+ body: body,
+ sourceType: 'script'
+ },
+ {indent: ''}
+ )
+ else if (body.length !== 0) {
+ let expr1 = {
+ type: 'Literal',
+ value: prefix
+ }
+ expr = expr === undefined ? expr1 : {
+ type: 'BinaryExpression',
+ left: expr,
+ operator: '+',
+ right: expr1,
+ }
+ result.push(
+ {
+ type: 'ExpressionStatement',
+ expression: {
+ type: 'CallExpression',
+ callee: {
+ type: 'MemberExpression',
+ object: {
+ type: 'Identifier',
+ name: '_out'
+ },
+ property: {
+ type: 'Identifier',
+ name: 'push'
+ },
+ computed: false
},
- computed: false
- },
- arguments: [
- expr
- ]
+ arguments: [
+ expr
+ ]
+ }
}
- }
- ].concat(c(context.body, st, 'Statement').body)
+ )
+ prefix = ''
+ expr = undefined
+
+ result = result.concat(body)
+ }
+
if (
tag !== 'br' &&
tag !== 'img' &&
tag !== 'link' &&
tag !== 'meta'
)
+ prefix += '</' + tag + '>'
+ if (prefix.length !== 0) {
+ let expr1 = {
+ type: 'Literal',
+ value: prefix
+ }
+ expr = expr === undefined ? expr1 : {
+ type: 'BinaryExpression',
+ left: expr,
+ operator: '+',
+ right: expr1,
+ }
result.push(
{
type: 'ExpressionStatement',
computed: false
},
arguments: [
- {
- type: 'Literal',
- value: '</' + tag + '>'
- }
+ expr
]
}
}
)
+ }
return result
}
if (
expr_to_tag(node.expression, context, true, false) &&
context.body !== undefined
- )
- return {
+ ) {
+ let body = html_body(context, st, c)
+ return body.length === 1 ? body[0] : {
type: 'BlockStatement',
- body: html_body(context, st, c)
+ body: body
}
+ }
}
return visitors_ExpressionStatement(node, st, c)
}