UNPKG

942 BJavaScriptView Raw
1var _ = require('lodash');
2
3module.exports = function transformDIf(tree) {
4 tree = tree || [];
5
6 var newTree = [];
7 var oldTree = tree.concat({});
8 var ifElseBlock = null;
9
10 _.forEach(oldTree, function (node) {
11 var name = node.name;
12 var children = node.children;
13
14 if (name !== 'd-else-if' && name !== 'd-else') {
15 if (ifElseBlock) {
16 newTree.push({
17 name: 'd-if',
18 children: ifElseBlock
19 });
20
21 ifElseBlock = null;
22 }
23
24 if (name === 'd-if') {
25 ifElseBlock = [node];
26 } else if (name) {
27 newTree.push(node);
28 }
29 } else {
30 (ifElseBlock || newTree).push(node);
31
32 if (name === 'd-else' && ifElseBlock) {
33 newTree.push({
34 name: 'd-if',
35 children: ifElseBlock
36 });
37
38 ifElseBlock = null;
39 }
40 }
41
42 if (children) {
43 node.children = transformDIf(children);
44 }
45 });
46
47 return newTree;
48};