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; | 
						|
        } | 
						|
    }; | 
						|
};
 | 
						|
 |