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.
28 lines
756 B
28 lines
756 B
import { List } from '../utils/List.js'; |
|
|
|
export function createConvertor(walk) { |
|
return { |
|
fromPlainObject(ast) { |
|
walk(ast, { |
|
enter(node) { |
|
if (node.children && node.children instanceof List === false) { |
|
node.children = new List().fromArray(node.children); |
|
} |
|
} |
|
}); |
|
|
|
return ast; |
|
}, |
|
toPlainObject(ast) { |
|
walk(ast, { |
|
leave(node) { |
|
if (node.children && node.children instanceof List) { |
|
node.children = node.children.toArray(); |
|
} |
|
} |
|
}); |
|
|
|
return ast; |
|
} |
|
}; |
|
};
|
|
|