"require": {
"cssjanus/cssjanus": "1.1.1",
"ext-iconv": "*",
- "leafo/lessphp": "0.5.0",
"liuggio/statsd-php-client": "1.0.16",
+ "oyejorge/less.php": "1.7.0.5",
"mediawiki/at-ease": "1.0.0",
"oojs/oojs-ui": "0.12.8",
"php": ">=5.3.3",
* @param Config $config
* @throws MWException
* @since 1.22
- * @return lessc
+ * @return Less_Parser
*/
public static function getLessCompiler( Config $config ) {
// When called from the installer, it is possible that a required PHP extension
// is missing (at least for now; see bug 47564). If this is the case, throw an
// exception (caught by the installer) to prevent a fatal error later on.
- if ( !class_exists( 'lessc' ) ) {
- throw new MWException( 'MediaWiki requires the lessphp compiler' );
- }
- if ( !function_exists( 'ctype_digit' ) ) {
- throw new MWException( 'lessc requires the Ctype extension' );
+ if ( !class_exists( 'Less_Parser' ) ) {
+ throw new MWException( 'MediaWiki requires the less.php parser' );
}
- $less = new lessc();
- $less->setPreserveComments( true );
- $less->setVariables( self::getLessVars( $config ) );
- $less->setImportDir( $config->get( 'ResourceLoaderLESSImportPaths' ) );
- return $less;
+ $parser = new Less_Parser;
+ $parser->ModifyVars( self::getLessVars( $config ) );
+ $parser->SetImportDirs( array_fill_keys( $config->get( 'ResourceLoaderLESSImportPaths' ), '' ) );
+ $parser->SetOption( 'relativeUrls', false );
+ $parser->SetCacheDir( $config->get( 'CacheDirectory' ) ?: wfTempDir() );
+
+ return $parser;
}
/**
// This is very conveniently formatted and we can pass it right through
$vars = $language->getImageFiles();
- // lessc tries to be helpful and parse our variables as LESS source code
+ // less.php tries to be helpful and parse our variables as LESS source code
foreach ( $vars as $key => &$value ) {
$value = self::cssSerializeString( $value );
}
*
* @throws MWException
* @param ResourceLoaderContext $context
- * @return lessc
+ * @return Less_Parser
*/
protected function getLessCompiler( ResourceLoaderContext $context = null ) {
- $compiler = parent::getLessCompiler();
- $compiler->setVariables( $this->getLessVars( $context ) );
- return $compiler;
+ $parser = parent::getLessCompiler();
+ $parser->ModifyVars( $this->getLessVars( $context ) );
+ return $parser;
}
}
* Keeps track of all used files and adds them to localFileRefs.
*
* @since 1.22
- * @throws Exception If lessc encounters a parse error
+ * @throws Exception If less.php encounters a parse error
* @param string $fileName File path of LESS source
- * @param lessc $compiler Compiler to use, if not default
+ * @param Less_Parser $parser Compiler to use, if not default
* @return string CSS source
*/
protected function compileLessFile( $fileName, $compiler = null ) {
if ( !$compiler ) {
$compiler = $this->getLessCompiler();
}
- $result = $compiler->compileFile( $fileName );
- $this->localFileRefs += array_keys( $compiler->allParsedFiles() );
+ $result = $compiler->parseFile( $fileName )->getCss();
+ $this->localFileRefs += array_keys( $compiler->AllParsedFiles() );
return $result;
}
* @param ResourceLoaderContext $context
* @throws MWException
* @since 1.24
- * @return lessc
+ * @return Less_Parser
*/
protected function getLessCompiler( ResourceLoaderContext $context = null ) {
return ResourceLoader::getLessCompiler( $this->getConfig() );