Chris@0: TRUE, Chris@0: 'multiple' => FALSE, Chris@0: 'default_value' => NULL, Chris@0: ]; Chris@0: // Annotation classes extract data from passed annotation classes directly Chris@0: // used in the classes they pass to. Chris@0: foreach (['label', 'description'] as $key) { Chris@0: // @todo Remove this workaround in https://www.drupal.org/node/2362727. Chris@0: if (isset($values[$key]) && $values[$key] instanceof TranslatableMarkup) { Chris@0: $values[$key] = (string) $values[$key]->get(); Chris@0: } Chris@0: else { Chris@0: $values[$key] = NULL; Chris@0: } Chris@0: } Chris@0: if (isset($values['class']) && !in_array('Drupal\Core\Plugin\Context\ContextDefinitionInterface', class_implements($values['class']))) { Chris@0: throw new \Exception('ContextDefinition class must implement \Drupal\Core\Plugin\Context\ContextDefinitionInterface.'); Chris@0: } Chris@0: $class = isset($values['class']) ? $values['class'] : 'Drupal\Core\Plugin\Context\ContextDefinition'; Chris@0: $this->definition = new $class($values['value'], $values['label'], $values['required'], $values['multiple'], $values['description'], $values['default_value']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Returns the value of an annotation. Chris@0: * Chris@0: * @return \Drupal\Core\Plugin\Context\ContextDefinitionInterface Chris@0: */ Chris@0: public function get() { Chris@0: return $this->definition; Chris@0: } Chris@0: Chris@0: }