plus-8.x-4.x-dev/src/Utility/AttributeData.php
src/Utility/AttributeData.php
<?php namespace Drupal\plus\Utility; use Symfony\Component\Serializer\NameConverter\CamelCaseToSnakeCaseNameConverter; /** * A class that defines a class based Attribute. */ class AttributeData extends AttributeArray { /** * {@inheritdoc} */ public function __construct(array &$value = []) { parent::__construct('data', $value); } /** * {@inheritdoc} */ public function __toString() { $output = ''; /* @var \Drupal\plus\Utility\AttributeDataValue $attribute */ foreach ($this->value() as $name => $attribute) { $output .= $attribute->render(); } return $output; } /** * {@inheritdoc} */ protected function sanitize(...$values) { $converter = new CamelCaseToSnakeCaseNameConverter(); return ArrayObject::create()->merge(...$values)->flatten() // Convert each data attribute into a AttributeDataValue object. ->map(function ($value, $key) use ($converter) { $key = 'data-' . str_replace('_', '-', $converter->normalize($key)); return new AttributeDataValue($key, $value); }); } /** * {@inheritdoc} */ public function render() { return $this->__toString(); } }