X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=vendor%2Fsymfony%2Fdom-crawler%2FCrawler.php;h=a3228d1bab6c2ed83d86e1245e880c09849349c6;hb=refs%2Fheads%2Fmaster;hp=d6dbe1e7a9768f700cc035096437372c0201b24e;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/vendor/symfony/dom-crawler/Crawler.php b/vendor/symfony/dom-crawler/Crawler.php index d6dbe1e7a..a3228d1ba 100644 --- a/vendor/symfony/dom-crawler/Crawler.php +++ b/vendor/symfony/dom-crawler/Crawler.php @@ -20,9 +20,6 @@ use Symfony\Component\CssSelector\CssSelectorConverter; */ class Crawler implements \Countable, \IteratorAggregate { - /** - * @var string The current URI - */ protected $uri; /** @@ -58,14 +55,14 @@ class Crawler implements \Countable, \IteratorAggregate private $isHtml = true; /** - * @param mixed $node A Node to use as the base for the crawling - * @param string $currentUri The current URI - * @param string $baseHref The base href value + * @param mixed $node A Node to use as the base for the crawling + * @param string $uri The current URI + * @param string $baseHref The base href value */ - public function __construct($node = null, $currentUri = null, $baseHref = null) + public function __construct($node = null, $uri = null, $baseHref = null) { - $this->uri = $currentUri; - $this->baseHref = $baseHref ?: $currentUri; + $this->uri = $uri; + $this->baseHref = $baseHref ?: $uri; $this->add($node); } @@ -107,7 +104,7 @@ class Crawler implements \Countable, \IteratorAggregate * * @param \DOMNodeList|\DOMNode|array|string|null $node A node * - * @throws \InvalidArgumentException When node is not the expected type. + * @throws \InvalidArgumentException when node is not the expected type */ public function add($node) { @@ -115,24 +112,24 @@ class Crawler implements \Countable, \IteratorAggregate $this->addNodeList($node); } elseif ($node instanceof \DOMNode) { $this->addNode($node); - } elseif (is_array($node)) { + } elseif (\is_array($node)) { $this->addNodes($node); - } elseif (is_string($node)) { + } elseif (\is_string($node)) { $this->addContent($node); } elseif (null !== $node) { - throw new \InvalidArgumentException(sprintf('Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "%s".', is_object($node) ? get_class($node) : gettype($node))); + throw new \InvalidArgumentException(sprintf('Expecting a DOMNodeList or DOMNode instance, an array, a string, or null, but got "%s".', \is_object($node) ? \get_class($node) : \gettype($node))); } } /** * Adds HTML/XML content. * - * If the charset is not set via the content type, it is assumed - * to be ISO-8859-1, which is the default charset defined by the + * If the charset is not set via the content type, it is assumed to be UTF-8, + * or ISO-8859-1 as a fallback, which is the default charset defined by the * HTTP 1.1 specification. * * @param string $content A string to parse as HTML/XML - * @param null|string $type The content type of the string + * @param string|null $type The content type of the string */ public function addContent($content, $type = null) { @@ -161,7 +158,7 @@ class Crawler implements \Countable, \IteratorAggregate } if (null === $charset) { - $charset = 'ISO-8859-1'; + $charset = preg_match('//u', $content) ? 'UTF-8' : 'ISO-8859-1'; } if ('x' === $xmlMatches[1]) { @@ -214,7 +211,7 @@ class Crawler implements \Countable, \IteratorAggregate $base = $this->filterRelativeXPath('descendant-or-self::base')->extract(array('href')); $baseHref = current($base); - if (count($base) && !empty($baseHref)) { + if (\count($base) && !empty($baseHref)) { if ($this->baseHref) { $linkNode = $dom->createElement('a'); $linkNode->setAttribute('href', $baseHref); @@ -325,7 +322,7 @@ class Crawler implements \Countable, \IteratorAggregate } // Don't add duplicate nodes in the Crawler - if (in_array($node, $this->nodes, true)) { + if (\in_array($node, $this->nodes, true)) { return; } @@ -384,7 +381,7 @@ class Crawler implements \Countable, \IteratorAggregate */ public function slice($offset = 0, $length = null) { - return $this->createSubCrawler(array_slice($this->nodes, $offset, $length)); + return $this->createSubCrawler(\array_slice($this->nodes, $offset, $length)); } /** @@ -425,7 +422,7 @@ class Crawler implements \Countable, \IteratorAggregate */ public function last() { - return $this->eq(count($this->nodes) - 1); + return $this->eq(\count($this->nodes) - 1); } /** @@ -629,7 +626,7 @@ class Crawler implements \Countable, \IteratorAggregate * * Example: * - * $crawler->filter('h1 a')->extract(array('_text', 'href')); + * $crawler->filter('h1 a')->extract(array('_text', 'href')); * * @param array $attributes An array of attributes * @@ -638,7 +635,7 @@ class Crawler implements \Countable, \IteratorAggregate public function extract($attributes) { $attributes = (array) $attributes; - $count = count($attributes); + $count = \count($attributes); $data = array(); foreach ($this->nodes as $node) { @@ -651,7 +648,7 @@ class Crawler implements \Countable, \IteratorAggregate } } - $data[] = $count > 1 ? $elements : $elements[0]; + $data[] = 1 === $count ? $elements[0] : $elements; } return $data; @@ -694,8 +691,8 @@ class Crawler implements \Countable, \IteratorAggregate */ public function filter($selector) { - if (!class_exists('Symfony\\Component\\CssSelector\\CssSelectorConverter')) { - throw new \RuntimeException('Unable to filter with a CSS selector as the Symfony CssSelector 2.8+ is not installed (you can use filterXPath instead).'); + if (!class_exists(CssSelectorConverter::class)) { + throw new \RuntimeException('To filter with a CSS selector, install the CssSelector component ("composer require symfony/css-selector"). Or use filterXpath instead.'); } $converter = new CssSelectorConverter($this->isHtml); @@ -743,7 +740,7 @@ class Crawler implements \Countable, \IteratorAggregate public function selectButton($value) { $translate = 'translate(@type, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")'; - $xpath = sprintf('descendant-or-self::input[((contains(%s, "submit") or contains(%s, "button")) and contains(concat(\' \', normalize-space(string(@value)), \' \'), %s)) ', $translate, $translate, static::xpathLiteral(' '.$value.' ')). + $xpath = sprintf('descendant-or-self::input[((contains(%s, "submit") or contains(%1$s, "button")) and contains(concat(\' \', normalize-space(string(@value)), \' \'), %s)) ', $translate, static::xpathLiteral(' '.$value.' ')). sprintf('or (contains(%s, "image") and contains(concat(\' \', normalize-space(string(@alt)), \' \'), %s)) or @id=%s or @name=%s] ', $translate, static::xpathLiteral(' '.$value.' '), static::xpathLiteral($value), static::xpathLiteral($value)). sprintf('| descendant-or-self::button[contains(concat(\' \', normalize-space(string(.)), \' \'), %s) or @id=%s or @name=%s]', static::xpathLiteral(' '.$value.' '), static::xpathLiteral($value), static::xpathLiteral($value)); @@ -768,7 +765,7 @@ class Crawler implements \Countable, \IteratorAggregate $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); } return new Link($node, $this->baseHref, $method); @@ -786,7 +783,7 @@ class Crawler implements \Countable, \IteratorAggregate $links = array(); foreach ($this->nodes as $node) { if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', get_class($node))); + throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', \get_class($node))); } $links[] = new Link($node, $this->baseHref, 'get'); @@ -804,14 +801,14 @@ class Crawler implements \Countable, \IteratorAggregate */ public function image() { - if (!count($this)) { + if (!\count($this)) { throw new \InvalidArgumentException('The current node list is empty.'); } $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); } return new Image($node, $this->baseHref); @@ -827,7 +824,7 @@ class Crawler implements \Countable, \IteratorAggregate $images = array(); foreach ($this as $node) { if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', get_class($node))); + throw new \InvalidArgumentException(sprintf('The current node list should contain only DOMElement instances, "%s" found.', \get_class($node))); } $images[] = new Image($node, $this->baseHref); @@ -855,7 +852,7 @@ class Crawler implements \Countable, \IteratorAggregate $node = $this->getNode(0); if (!$node instanceof \DOMElement) { - throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', get_class($node))); + throw new \InvalidArgumentException(sprintf('The selected node should be instance of DOMElement, got "%s".', \get_class($node))); } $form = new Form($node, $this->uri, $method, $this->baseHref); @@ -892,7 +889,7 @@ class Crawler implements \Countable, \IteratorAggregate * Escaped characters are: quotes (") and apostrophe ('). * * Examples: - * + * * echo Crawler::xpathLiteral('foo " bar'); * //prints 'foo " bar' * @@ -901,7 +898,7 @@ class Crawler implements \Countable, \IteratorAggregate * * echo Crawler::xpathLiteral('a\'b"c'); * //prints concat('a', "'", 'b"c') - * + * * * @param string $s String to be escaped * @@ -974,7 +971,7 @@ class Crawler implements \Countable, \IteratorAggregate // We cannot simply drop $nonMatchingExpression = 'a[name() = "b"]'; - $xpathLen = strlen($xpath); + $xpathLen = \strlen($xpath); $openedBrackets = 0; $startPosition = strspn($xpath, " \t\n\r\0\x0B"); @@ -1067,11 +1064,11 @@ class Crawler implements \Countable, \IteratorAggregate */ public function count() { - return count($this->nodes); + return \count($this->nodes); } /** - * @return \ArrayIterator + * @return \ArrayIterator|\DOMElement[] */ public function getIterator() { @@ -1089,7 +1086,7 @@ class Crawler implements \Countable, \IteratorAggregate $nodes = array(); do { - if ($node !== $this->getNode(0) && $node->nodeType === 1) { + if ($node !== $this->getNode(0) && 1 === $node->nodeType) { $nodes[] = $node; } } while ($node = $node->$siblingDir);