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.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							984 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							41 lines
						
					
					
						
							984 B
						
					
					
				
								var ast = require("./ast");
							 | 
						|
								
							 | 
						|
								exports.freshElement = ast.freshElement;
							 | 
						|
								exports.nonFreshElement = ast.nonFreshElement;
							 | 
						|
								exports.elementWithTag = ast.elementWithTag;
							 | 
						|
								exports.text = ast.text;
							 | 
						|
								exports.forceWrite = ast.forceWrite;
							 | 
						|
								
							 | 
						|
								exports.simplify = require("./simplify");
							 | 
						|
								
							 | 
						|
								function write(writer, nodes) {
							 | 
						|
								    nodes.forEach(function(node) {
							 | 
						|
								        writeNode(writer, node);
							 | 
						|
								    });
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function writeNode(writer, node) {
							 | 
						|
								    toStrings[node.type](writer, node);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								var toStrings = {
							 | 
						|
								    element: generateElementString,
							 | 
						|
								    text: generateTextString,
							 | 
						|
								    forceWrite: function() { }
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								function generateElementString(writer, node) {
							 | 
						|
								    if (ast.isVoidElement(node)) {
							 | 
						|
								        writer.selfClosing(node.tag.tagName, node.tag.attributes);
							 | 
						|
								    } else {
							 | 
						|
								        writer.open(node.tag.tagName, node.tag.attributes);
							 | 
						|
								        write(writer, node.children);
							 | 
						|
								        writer.close(node.tag.tagName);
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function generateTextString(writer, node) {
							 | 
						|
								    writer.text(node.value);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								exports.write = write;
							 | 
						|
								
							 |