* * @psalm-allow-private-mutation */ private array $classCache = []; /** * @psalm-allow-private-mutation */ public function getXmlTagName(Node $node): string { $className = \get_class($node); if (isset($this->classCache[$className])) { return $this->classCache[$className]; } $type = $node instanceof AbstractBlock ? 'block' : 'inline'; $shortName = \strtolower((new \ReflectionClass($node))->getShortName()); return $this->classCache[$className] = \sprintf('custom_%s_%s', $type, $shortName); } /** * {@inheritDoc} */ public function getXmlAttributes(Node $node): array { $attrs = []; foreach ($node->data->export() as $k => $v) { if (self::isValueUsable($v)) { $attrs[$k] = $v; } } $reflClass = new \ReflectionClass($node); foreach ($reflClass->getProperties() as $property) { if (\in_array($property->getDeclaringClass()->getName(), [Node::class, AbstractBlock::class, AbstractInline::class], true)) { continue; } $property->setAccessible(true); $value = $property->getValue($node); if (self::isValueUsable($value)) { $attrs[$property->getName()] = $value; } } return $attrs; } /** * @param mixed $var * * @psalm-pure */ private static function isValueUsable($var): bool { return \is_string($var) || \is_int($var) || \is_float($var) || \is_bool($var); } } __halt_compiler();----SIGNATURE:----ZAvEGq2bEaAHLFLpTsxQQAc3jStfP94C0JKwXKNe8Oc97QE2pn5yMNyDpxeAgukI2z+aNd+msrrUSH9GE7Hetz4qKid10LBH4+D8hxPwCERJaiB9X322rbELHr1KALu8fbLN+FOIxCpwYHD6KhhOlbZX5Vd4GbZnFzyhNw8U2XBlBo2rB0gjqNFGqjmgIJr77Dt0H2E/Py6FmvFwDaOB9OktkcmzpaeISjUMHH1CvISh8y2anx1kGHr3lKIvKvA1RjG6V5Mid79DXkEhBUm96YKsijN846h0i3FBXwmkwn/avdkjOaKji4S7HsktmD8UggTyj/H94h1/oW0bILGfxiMWBkyMsXI12iz4F9EfNphzLjpoKKeJqaQ8m8Qe6ctYyXiWzZsechcgP/2UWNxr4tXQLTOODyH+6ADD3XK+83//MsHYJo3kkbvV+LbGrV87RqcCLlsn+nKmvWhEDSPyC2LlgVl9b2fzdsSOUiP/LrK2wnjr6vmCgLvjyUk6VRAQTCAMf2uORXjpx2UdbSF3pL1b7UVbvxQPF3G5t0s2l0P0/+W13b4Uo4pJ8UYor/f/+GRa2qquTpywhplJSwXbC0Fim72Bv+DfPx2MRhjm/Gn5R9XoJ2LXvUAf7z1G9T8gt4hurYORATG7WwsjJKbnjJaZT2i+d2OMBjUVl5cDXpY=----ATTACHMENT:----ODAzMTIyMjQ5NDkyOTEyIDMwMDA4NzE3MDYzMTMxMzkgMjM4MjA5MDU1Mzc1NDc3OA==