You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
824 B
32 lines
824 B
'use strict'; |
|
|
|
const List = require('../utils/List.cjs'); |
|
|
|
function createConvertor(walk) { |
|
return { |
|
fromPlainObject(ast) { |
|
walk(ast, { |
|
enter(node) { |
|
if (node.children && node.children instanceof List.List === false) { |
|
node.children = new List.List().fromArray(node.children); |
|
} |
|
} |
|
}); |
|
|
|
return ast; |
|
}, |
|
toPlainObject(ast) { |
|
walk(ast, { |
|
leave(node) { |
|
if (node.children && node.children instanceof List.List) { |
|
node.children = node.children.toArray(); |
|
} |
|
} |
|
}); |
|
|
|
return ast; |
|
} |
|
}; |
|
} |
|
|
|
exports.createConvertor = createConvertor;
|
|
|