| @@ 215-231 (lines=17) @@ | ||
| 212 | * | |
| 213 | * @return $this | |
| 214 | */ | |
| 215 | public function append($key, $value = null) | |
| 216 |     { | |
| 217 | $this->storage += array( | |
| 218 | $key => new Attribute( | |
| 219 | $key, | |
| 220 | $this->ensureString($value) | |
| 221 | ) | |
| 222 | ); | |
| 223 | ||
| 224 | $value = $this->normalizeValue($value); | |
| 225 | ||
| 226 |         foreach ($value as $value_item) { | |
| 227 | $this->storage[$key]->append($value_item); | |
| 228 | } | |
| 229 | ||
| 230 | return $this; | |
| 231 | } | |
| 232 | ||
| 233 | /** | |
| 234 | * Remove a value from a specific attribute. | |
| @@ 306-322 (lines=17) @@ | ||
| 303 | * | |
| 304 | * @return $this | |
| 305 | */ | |
| 306 | public function replace($key, $value, $replacement) | |
| 307 |     { | |
| 308 | $this->storage += array( | |
| 309 | $key => new Attribute( | |
| 310 | $key, | |
| 311 | $this->ensureString($value) | |
| 312 | ) | |
| 313 | ); | |
| 314 | ||
| 315 | $replacement = $this->normalizeValue($replacement); | |
| 316 | ||
| 317 |         foreach ($replacement as $replacement_value) { | |
| 318 | $this->storage[$key]->replace($value, $replacement_value); | |
| 319 | } | |
| 320 | ||
| 321 | return $this; | |
| 322 | } | |
| 323 | ||
| 324 | /** | |
| 325 | * Merge attributes. | |
| @@ 332-348 (lines=17) @@ | ||
| 329 | * | |
| 330 | * @return $this | |
| 331 | */ | |
| 332 | public function merge(array $data = array()) | |
| 333 |     { | |
| 334 |         foreach ($data as $key => $value) { | |
| 335 | $this->storage += array( | |
| 336 | $key => new Attribute( | |
| 337 | $key, | |
| 338 | $this->ensureString($value) | |
| 339 | ) | |
| 340 | ); | |
| 341 | ||
| 342 | $this->storage[$key]->merge( | |
| 343 | $this->normalizeValue($value) | |
| 344 | ); | |
| 345 | } | |
| 346 | ||
| 347 | return $this; | |
| 348 | } | |
| 349 | ||
| 350 | /** | |
| 351 | * Check if an attribute exists and if a value if provided check it as well. | |