PhpParser(.*?))\\(#ms';
/**
* @var string
* @see https://regex101.com/r/uQFuvL/1
*/
private const PROPERTY_KEY_REGEX = '#(?[\\w\\d]+)\\:#';
public function __construct(SymfonyStyle $symfonyStyle)
{
$this->symfonyStyle = $symfonyStyle;
}
/**
* @param Node|Node[] $nodes
*/
public function printNodes($nodes) : void
{
$dumpedNodesContents = SimpleNodeDumper::dump($nodes);
// colorize
$colorContents = $this->addConsoleColors($dumpedNodesContents);
$this->symfonyStyle->writeln($colorContents);
$this->symfonyStyle->newLine();
}
private function addConsoleColors(string $contents) : string
{
// decorate class names
$colorContents = Strings::replace($contents, self::CLASS_NAME_REGEX, static function (array $match) : string {
return '' . $match['class_name'] . '>(';
});
// decorate keys
return Strings::replace($colorContents, self::PROPERTY_KEY_REGEX, static function (array $match) : string {
return '' . $match['key'] . '>:';
});
}
}