2015-08-18 00:00:26 +00:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\CssSelector ;
2016-04-20 16:56:34 +00:00
@ trigger_error ( 'The ' . __NAMESPACE__ . '\CssSelector class is deprecated since version 2.8 and will be removed in 3.0. Use directly the \Symfony\Component\CssSelector\CssSelectorConverter class instead.' , E_USER_DEPRECATED );
2015-08-18 00:00:26 +00:00
/**
* CssSelector is the main entry point of the component and can convert CSS
* selectors to XPath expressions .
*
* $xpath = CssSelector :: toXpath ( 'h1.foo' );
*
* This component is a port of the Python cssselect library ,
* which is copyright Ian Bicking , @ see https :// github . com / SimonSapin / cssselect .
*
* Copyright ( c ) 2007 - 2012 Ian Bicking and contributors . See AUTHORS
* for more details .
*
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions are
* met :
*
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in
* the documentation and / or other materials provided with the
* distribution .
*
* 3. Neither the name of Ian Bicking nor the names of its contributors may
* be used to endorse or promote products derived from this software
* without specific prior written permission .
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL IAN BICKING OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL ,
* EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT LIMITED TO ,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE , DATA , OR
* PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING
* NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*
* @ author Fabien Potencier < fabien @ symfony . com >
2016-04-20 16:56:34 +00:00
*
* @ deprecated as of 2.8 , will be removed in 3.0 . Use the \Symfony\Component\CssSelector\CssSelectorConverter class instead .
2015-08-18 00:00:26 +00:00
*/
class CssSelector
{
private static $html = true ;
/**
* Translates a CSS expression to its XPath equivalent .
* Optionally , a prefix can be added to the resulting XPath
* expression with the $prefix parameter .
*
* @ param mixed $cssExpr The CSS expression .
* @ param string $prefix An optional prefix for the XPath expression .
*
* @ return string
*/
public static function toXPath ( $cssExpr , $prefix = 'descendant-or-self::' )
{
2016-04-20 16:56:34 +00:00
$converter = new CssSelectorConverter ( self :: $html );
2015-08-18 00:00:26 +00:00
2016-04-20 16:56:34 +00:00
return $converter -> toXPath ( $cssExpr , $prefix );
2015-08-18 00:00:26 +00:00
}
/**
* Enables the HTML extension .
*/
public static function enableHtmlExtension ()
{
self :: $html = true ;
}
/**
* Disables the HTML extension .
*/
public static function disableHtmlExtension ()
{
self :: $html = false ;
}
}