forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | 
 | ||
|  | namespace PhpParser; | ||
|  | 
 | ||
|  | class NodeDumper | ||
|  | { | ||
|  |     /** | ||
|  |      * Dumps a node or array. | ||
|  |      * | ||
|  |      * @param array|Node $node Node or array to dump | ||
|  |      * | ||
|  |      * @return string Dumped value | ||
|  |      */ | ||
|  |     public function dump($node) { | ||
|  |         if ($node instanceof Node) { | ||
|  |             $r = $node->getType() . '('; | ||
|  | 
 | ||
|  |             foreach ($node->getSubNodeNames() as $key) { | ||
|  |                 $r .= "\n    " . $key . ': '; | ||
|  | 
 | ||
|  |                 $value = $node->$key; | ||
|  |                 if (null === $value) { | ||
|  |                     $r .= 'null'; | ||
|  |                 } elseif (false === $value) { | ||
|  |                     $r .= 'false'; | ||
|  |                 } elseif (true === $value) { | ||
|  |                     $r .= 'true'; | ||
|  |                 } elseif (is_scalar($value)) { | ||
|  |                     $r .= $value; | ||
|  |                 } else { | ||
|  |                     $r .= str_replace("\n", "\n    ", $this->dump($value)); | ||
|  |                 } | ||
|  |             } | ||
|  |         } elseif (is_array($node)) { | ||
|  |             $r = 'array('; | ||
|  | 
 | ||
|  |             foreach ($node as $key => $value) { | ||
|  |                 $r .= "\n    " . $key . ': '; | ||
|  | 
 | ||
|  |                 if (null === $value) { | ||
|  |                     $r .= 'null'; | ||
|  |                 } elseif (false === $value) { | ||
|  |                     $r .= 'false'; | ||
|  |                 } elseif (true === $value) { | ||
|  |                     $r .= 'true'; | ||
|  |                 } elseif (is_scalar($value)) { | ||
|  |                     $r .= $value; | ||
|  |                 } else { | ||
|  |                     $r .= str_replace("\n", "\n    ", $this->dump($value)); | ||
|  |                 } | ||
|  |             } | ||
|  |         } else { | ||
|  |             throw new \InvalidArgumentException('Can only dump nodes and arrays.'); | ||
|  |         } | ||
|  | 
 | ||
|  |         return $r . "\n)"; | ||
|  |     } | ||
|  | } |