You are here

function color_field_tokens in Color Field 8.2

Implements hook_tokens().

File

./color_field.module, line 147
A color field with a custom color picker using the Field Types API.

Code

function color_field_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
  $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;
}