1 | var _ = require('lodash');
|
2 |
|
3 | module.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 | };
|