Add compatibility layer from leafo/scssphp to scssphp/scssphp
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 30 Jun 2020 07:30:09 +0000 (09:30 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 30 Jun 2020 07:37:22 +0000 (09:37 +0200)
The basic usage of this compatibility layer appears to work well:

A CSS file can be compiled from the default style, without needing any
additional adjustments.

What this compatibility layer cannot do is rewrite the Exceptions that
are thrown by scssphp/scssphp. A strict catch block catching a specific
Exception, such as `\Leafo\ScssPhp\Exception\ParserException` will not
match the aliased `ScssPhp\ScssPhp\Exception\ParserException`.

Resolves #3398

wcfsetup/install/files/lib/core.functions.php
wcfsetup/install/files/lib/system/style/scssphp/scss.inc.php

index 6e53aacb03669a823c0422fda7d25fe752e61823..adfe6593a2aa951637bf9f1c5e31957a6a91a851 100644 (file)
@@ -17,6 +17,16 @@ namespace {
        // set autoload function
        spl_autoload_register([WCF::class, 'autoload']);
        
+       spl_autoload_register(function ($className) {
+               /**
+                * @deprecated 5.3 This file is a compatibility layer mapping from Leafo\\ to ScssPhp\\
+                */
+               $leafo = 'Leafo\\';
+               if (substr($className, 0, strlen($leafo)) === $leafo) {
+                       class_alias('ScssPhp\\'.substr($className, strlen($leafo)), $className, true);
+               }
+       });
+       
        /**
         * Escapes a string for use in sql query.
         * 
index c7038bfcd4f7bdd2a72301e285d8e7c298530c2d..2916dee430a8a41736c5307474691a18c6e5d6aa 100644 (file)
@@ -1,2 +1,5 @@
 <?php
-require(WCF_DIR.'lib/system/api/leafo/scssphp/scss.inc.php');
+/**
+ * @deprecated 5.3 The SCSS compiler is a composer package as of 5.2.
+ */
+require(WCF_DIR.'lib/system/api/scssphp/scssphp/scss.inc.php');