Version 1
[yaffs-website] / web / core / lib / Drupal / Core / Template / AttributeValueBase.php
diff --git a/web/core/lib/Drupal/Core/Template/AttributeValueBase.php b/web/core/lib/Drupal/Core/Template/AttributeValueBase.php
new file mode 100644 (file)
index 0000000..0990eb3
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+
+namespace Drupal\Core\Template;
+use Drupal\Component\Utility\Html;
+
+/**
+ * Defines the base class for an attribute type.
+ *
+ * @see \Drupal\Core\Template\Attribute
+ */
+abstract class AttributeValueBase {
+
+  /**
+   * Renders '$name=""' if $value is an empty string.
+   *
+   * @see \Drupal\Core\Template\AttributeValueBase::render()
+   */
+  const RENDER_EMPTY_ATTRIBUTE = TRUE;
+
+  /**
+   * The value itself.
+   *
+   * @var mixed
+   */
+  protected $value;
+
+  /**
+   * The name of the value.
+   *
+   * @var mixed
+   */
+  protected $name;
+
+  /**
+   * Constructs a \Drupal\Core\Template\AttributeValueBase object.
+   */
+  public function __construct($name, $value) {
+    $this->name = $name;
+    $this->value = $value;
+  }
+
+  /**
+   * Returns a string representation of the attribute.
+   *
+   * While __toString only returns the value in a string form, render()
+   * contains the name of the attribute as well.
+   *
+   * @return string
+   *   The string representation of the attribute.
+   */
+  public function render() {
+    $value = (string) $this;
+    if (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
+      return Html::escape($this->name) . '="' . $value . '"';
+    }
+  }
+
+  /**
+   * Returns the raw value.
+   */
+  public function value() {
+    return $this->value;
+  }
+
+  /**
+   * Implements the magic __toString() method.
+   */
+  abstract public function __toString();
+
+}