diff -r 000000000000 -r 7f95f8617b0b vendor/symfony/src/Symfony/Component/CssSelector/Node/ElementNode.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/symfony/src/Symfony/Component/CssSelector/Node/ElementNode.php Sat Sep 24 15:40:41 2011 +0200 @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\CssSelector\Node; + +use Symfony\Component\CssSelector\XPathExpr; + +/** + * ElementNode represents a "namespace|element" node. + * + * This component is a port of the Python lxml library, + * which is copyright Infrae and distributed under the BSD license. + * + * @author Fabien Potencier + */ +class ElementNode implements NodeInterface +{ + protected $namespace; + protected $element; + + /** + * Constructor. + * + * @param string $namespace Namespace + * @param string $element Element + */ + public function __construct($namespace, $element) + { + $this->namespace = $namespace; + $this->element = $element; + } + + /** + * {@inheritDoc} + */ + public function __toString() + { + return sprintf('%s[%s]', __CLASS__, $this->formatElement()); + } + + /** + * Formats the element into a string. + * + * @return string Element as an XPath string + */ + public function formatElement() + { + if ($this->namespace == '*') { + return $this->element; + } + + return sprintf('%s|%s', $this->namespace, $this->element); + } + + /** + * {@inheritDoc} + */ + public function toXpath() + { + if ($this->namespace == '*') { + $el = strtolower($this->element); + } else { + // FIXME: Should we lowercase here? + $el = sprintf('%s:%s', $this->namespace, $this->element); + } + + return new XPathExpr(null, null, $el); + } +}