| @@ 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. |
|