Mercurial > hg > cmmr2012-drupal-site
annotate vendor/symfony/css-selector/Node/Specificity.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 /* |
Chris@0 | 4 * This file is part of the Symfony package. |
Chris@0 | 5 * |
Chris@0 | 6 * (c) Fabien Potencier <fabien@symfony.com> |
Chris@0 | 7 * |
Chris@0 | 8 * For the full copyright and license information, please view the LICENSE |
Chris@0 | 9 * file that was distributed with this source code. |
Chris@0 | 10 */ |
Chris@0 | 11 |
Chris@0 | 12 namespace Symfony\Component\CssSelector\Node; |
Chris@0 | 13 |
Chris@0 | 14 /** |
Chris@0 | 15 * Represents a node specificity. |
Chris@0 | 16 * |
Chris@0 | 17 * This component is a port of the Python cssselect library, |
Chris@0 | 18 * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. |
Chris@0 | 19 * |
Chris@0 | 20 * @see http://www.w3.org/TR/selectors/#specificity |
Chris@0 | 21 * |
Chris@0 | 22 * @author Jean-François Simon <jeanfrancois.simon@sensiolabs.com> |
Chris@0 | 23 * |
Chris@0 | 24 * @internal |
Chris@0 | 25 */ |
Chris@0 | 26 class Specificity |
Chris@0 | 27 { |
Chris@0 | 28 const A_FACTOR = 100; |
Chris@0 | 29 const B_FACTOR = 10; |
Chris@0 | 30 const C_FACTOR = 1; |
Chris@0 | 31 |
Chris@0 | 32 private $a; |
Chris@0 | 33 private $b; |
Chris@0 | 34 private $c; |
Chris@0 | 35 |
Chris@0 | 36 /** |
Chris@0 | 37 * @param int $a |
Chris@0 | 38 * @param int $b |
Chris@0 | 39 * @param int $c |
Chris@0 | 40 */ |
Chris@0 | 41 public function __construct($a, $b, $c) |
Chris@0 | 42 { |
Chris@0 | 43 $this->a = $a; |
Chris@0 | 44 $this->b = $b; |
Chris@0 | 45 $this->c = $c; |
Chris@0 | 46 } |
Chris@0 | 47 |
Chris@0 | 48 /** |
Chris@0 | 49 * @return self |
Chris@0 | 50 */ |
Chris@0 | 51 public function plus(self $specificity) |
Chris@0 | 52 { |
Chris@0 | 53 return new self($this->a + $specificity->a, $this->b + $specificity->b, $this->c + $specificity->c); |
Chris@0 | 54 } |
Chris@0 | 55 |
Chris@0 | 56 /** |
Chris@0 | 57 * Returns global specificity value. |
Chris@0 | 58 * |
Chris@0 | 59 * @return int |
Chris@0 | 60 */ |
Chris@0 | 61 public function getValue() |
Chris@0 | 62 { |
Chris@0 | 63 return $this->a * self::A_FACTOR + $this->b * self::B_FACTOR + $this->c * self::C_FACTOR; |
Chris@0 | 64 } |
Chris@0 | 65 |
Chris@0 | 66 /** |
Chris@0 | 67 * Returns -1 if the object specificity is lower than the argument, |
Chris@0 | 68 * 0 if they are equal, and 1 if the argument is lower. |
Chris@0 | 69 * |
Chris@0 | 70 * @return int |
Chris@0 | 71 */ |
Chris@0 | 72 public function compareTo(self $specificity) |
Chris@0 | 73 { |
Chris@0 | 74 if ($this->a !== $specificity->a) { |
Chris@0 | 75 return $this->a > $specificity->a ? 1 : -1; |
Chris@0 | 76 } |
Chris@0 | 77 |
Chris@0 | 78 if ($this->b !== $specificity->b) { |
Chris@0 | 79 return $this->b > $specificity->b ? 1 : -1; |
Chris@0 | 80 } |
Chris@0 | 81 |
Chris@0 | 82 if ($this->c !== $specificity->c) { |
Chris@0 | 83 return $this->c > $specificity->c ? 1 : -1; |
Chris@0 | 84 } |
Chris@0 | 85 |
Chris@0 | 86 return 0; |
Chris@0 | 87 } |
Chris@0 | 88 } |