Same name and namespace in other branches
  1. 8.x-2.x color_field.module \color_field_tokens() 1 comment

Implements hook_tokens().

File

./color_field.module, line 150

Code

function color_field_tokens(string $type, array $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) : array {
    $replacements = [];
    if ($type === 'color_field' && !empty($data['color_field'])) {
        
        /** @var \Drupal\color_field\Plugin\Field\FieldType\ColorFieldType $color_field */
        $color_field = $data['color_field'];
        $color_hex = new ColorHex($color_field->color, $color_field->opacity);
        foreach ($tokens as $name => $original) {
            switch ($name) {
                case 'hex':
                    $replacements[$original] = $color_hex->toString(FALSE);
                    break;
                case 'hex:with_opacity':
                    $replacements[$original] = $color_hex->toString(TRUE);
                    break;
                case 'rgb':
                    $replacements[$original] = $color_hex->toRgb()
                        ->toString(FALSE);
                    break;
                case 'rgba':
                    $replacements[$original] = $color_hex->toRgb()
                        ->toString(TRUE);
                    break;
                case 'rgb:red':
                    $replacements[$original] = $color_hex->toRgb()
                        ->getRed();
                    break;
                case 'rgb:blue':
                    $replacements[$original] = $color_hex->toRgb()
                        ->getBlue();
                    break;
                case 'rgb:green':
                    $replacements[$original] = $color_hex->toRgb()
                        ->getGreen();
                    break;
                case 'rgb:opacity':
                    $replacements[$original] = $color_hex->toRgb()
                        ->getOpacity();
                    break;
            }
        }
    }
    return $replacements;
}