express-8.x-1.x-dev/themes/contrib/bootstrap/src/Utility/Attributes.php
themes/contrib/bootstrap/src/Utility/Attributes.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | <?php /** * @file * Contains \Drupal\bootstrap\Utility\Attributes. */ namespace Drupal\bootstrap\Utility; /** * Class to help modify attributes. * * @ingroup utility */ class Attributes extends ArrayObject { /** * {@inheritdoc} */ public function __construct( array & $array = []) { $this -> array = & $array ; } /** * Add class(es) to the array. * * @param string|array $class * An individual class or an array of classes to add. * * @see \Drupal\bootstrap\Utility\Attributes::getClasses() */ public function addClass( $class ) { $classes = & $this ->getClasses(); $classes = array_unique ( array_merge ( $classes , ( array ) $class )); } /** * Retrieve a specific attribute from the array. * * @param string $name * The specific attribute to retrieve. * @param mixed $default * (optional) The default value to set if the attribute does not exist. * * @return mixed * A specific attribute value, passed by reference. * * @see \Drupal\bootstrap\Utility\ArrayObject::offsetGet() */ public function &getAttribute( $name , $default = NULL) { return $this ->offsetGet( $name , $default ); } /** * Retrieves classes from the array. * * @return array * The classes array, passed by reference. * * @see \Drupal\bootstrap\Utility\ArrayObject::offsetGet() */ public function &getClasses() { $classes = & $this ->offsetGet( 'class' , []); $classes = array_unique ( $classes ); return $classes ; } /** * Indicates whether a specific attribute is set. * * @param string $name * The attribute to search for. * * @return bool * TRUE or FALSE * * @see \Drupal\bootstrap\Utility\ArrayObject::offsetExists() */ public function hasAttribute( $name ) { return $this ->offsetExists( $name ); } /** * Indicates whether a class is present in the array. * * @param string|array $class * The class or array of classes to search for. * @param bool $all * Flag determining to check if all classes are present. * * @return bool * TRUE or FALSE * * @see \Drupal\bootstrap\Utility\Attributes::getClasses() */ public function hasClass( $class , $all = FALSE) { $classes = ( array ) $class ; $result = array_intersect ( $classes , $this ->getClasses()); return $all ? $result && count ( $classes ) === count ( $result ) : !! $result ; } /** * Removes an attribute from the array. * * @param string|array $name * The name of the attribute to remove. * * @see \Drupal\bootstrap\Utility\ArrayObject::offsetUnset() */ public function removeAttribute( $name ) { $this ->offsetUnset( $name ); } /** * Removes a class from the attributes array. * * @param string|array $class * An individual class or an array of classes to remove. * * @see \Drupal\bootstrap\Utility\Attributes::getClasses() */ public function removeClass( $class ) { $classes = & $this ->getClasses(); $classes = array_values ( array_diff ( $classes , ( array ) $class )); } /** * Replaces a class in the attributes array. * * @param string $old * The old class to remove. * @param string $new * The new class. It will not be added if the $old class does not exist. * * @see \Drupal\bootstrap\Utility\Attributes::getClasses() */ public function replaceClass( $old , $new ) { $classes = & $this ->getClasses(); $key = array_search ( $old , $classes ); if ( $key !== FALSE) { $classes [ $key ] = $new ; } } /** * Sets an attribute on the array. * * @param string $name * The name of the attribute to set. * @param mixed $value * The value of the attribute to set. * * @see \Drupal\bootstrap\Utility\ArrayObject::offsetSet() */ public function setAttribute( $name , $value ) { $this ->offsetSet( $name , $value ); } /** * Sets multiple attributes on the array. * * @param array $values * An associative key/value array of attributes to set. * * @see \Drupal\bootstrap\Utility\ArrayObject::merge() */ public function setAttributes( array $values ) { $this ->merge( $values ); } } |