52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?php declare(strict_types=1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace PhpParser;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								use PhpParser\Node\Expr;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface PrettyPrinter {
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Pretty prints an array of statements.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param Node[] $stmts Array of statements
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return string Pretty printed statements
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function prettyPrint(array $stmts): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Pretty prints an expression.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param Expr $node Expression node
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return string Pretty printed node
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function prettyPrintExpr(Expr $node): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Pretty prints a file of statements (includes the opening <?php tag if it is required).
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param Node[] $stmts Array of statements
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @return string Pretty printed statements
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function prettyPrintFile(array $stmts): string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /**
							 | 
						||
| 
								 | 
							
								     * Perform a format-preserving pretty print of an AST.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * The format preservation is best effort. For some changes to the AST the formatting will not
							 | 
						||
| 
								 | 
							
								     * be preserved (at least not locally).
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * In order to use this method a number of prerequisites must be satisfied:
							 | 
						||
| 
								 | 
							
								     *  * The startTokenPos and endTokenPos attributes in the lexer must be enabled.
							 | 
						||
| 
								 | 
							
								     *  * The CloningVisitor must be run on the AST prior to modification.
							 | 
						||
| 
								 | 
							
								     *  * The original tokens must be provided, using the getTokens() method on the lexer.
							 | 
						||
| 
								 | 
							
								     *
							 | 
						||
| 
								 | 
							
								     * @param Node[] $stmts Modified AST with links to original AST
							 | 
						||
| 
								 | 
							
								     * @param Node[] $origStmts Original AST with token offset information
							 | 
						||
| 
								 | 
							
								     * @param Token[] $origTokens Tokens of the original code
							 | 
						||
| 
								 | 
							
								     */
							 | 
						||
| 
								 | 
							
								    public function printFormatPreserving(array $stmts, array $origStmts, array $origTokens): string;
							 | 
						||
| 
								 | 
							
								}
							 |