%PDF- %PDF-
Direktori : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Util/ |
Current File : /home/q/g/b/qgbqkvz/www/wp-content/plugins/wp-scss/scssphp/src/Util/EquatableUtil.php |
<?php /** * SCSSPHP * * @copyright 2012-2020 Leaf Corcoran * * @license http://opensource.org/licenses/MIT MIT * * @link http://scssphp.github.io/scssphp */ namespace ScssPhp\ScssPhp\Util; /** * @internal */ final class EquatableUtil { /** * @param list<mixed> $list */ public static function listContains(array $list, Equatable $item): bool { foreach ($list as $listItem) { if (!\is_object($listItem)) { continue; } if ($item === $listItem) { return true; } if ($item->equals($listItem)) { return true; } } return false; } /** * Checks whether 2 values are equals, using the Equatable semantic to compare objects if possible. * * When compared values don't implement {@see Equatable}, they are compared * using `===`. * Values implementing {@see Equatable} are still compared with `===` first to * optimize comparisons to the same object, as an object is always expected to * be equal to itself. * * @param mixed $item1 * @param mixed $item2 * * @return bool */ public static function equals($item1, $item2): bool { if ($item1 === $item2) { return true; } if ($item1 instanceof Equatable && $item2 instanceof Equatable) { return $item1->equals($item2); } return false; } /** * Checks whether 2 lists are equals, using the Equatable semantic to compare objects if possible. * * @param list<mixed> $list1 * @param list<mixed> $list2 */ public static function listEquals(array $list1, array $list2): bool { if (\count($list1) !== \count($list2)) { return false; } foreach ($list1 as $i => $item1) { $item2 = $list2[$i]; if (self::equals($item1, $item2)) { continue; } return false; } return true; } }