Détail du message 73463.2

Message numéro 2 dans le sujet L'utilisation de @charset fait bugger la génération de la feuille de style.

  • 73463.2

    17/01/2013 17:42


    Gaël Port
    Titre : Développeur RBS Change
    Rang : Expert
    Effectivement, ces règles ne sont pas gérées pour diverses raisons.

    En particulier, concernant le charset, c'est a priori une règle très peu utilisée et qui doit nécessairement se retrouver en première ligne de la feuille de style générée. Or comme nous fusionnons les différentes feuilles, cela n'est pas trivial à tester.

    Mais effectivement, simplement les ignorer (en loguant un message en mode warn) plutôt que lancer une exception semble une meilleure solution, surtout si sass en génère une par défaut...

    La modif que je viens de tester et que j'archiverai dans la 3.6.4 consiste à remplacer les lignes que vous avez citées par :
    			// handle @-rules
    			// Rules like @xxx ...; //@charset, @namespace, @phonetic-alphabet
    			// -> These @-rules are not very used, so we choose to ignore them here: using these rules will cause an error!
    			else if ($cssText[$i] === '@' && $inSelector && !$inComment && (substr($cssText, $i, 8) === '@charset' || substr($cssText, $i, 10) === '@namespace' || substr($cssText, $i, 18) === '@phonetic-alphabet'))
    			{
    				$idx = strpos($cssText, ";", $i);
    				if (!$idx)
    				{
    					throw new Exception('Invalid directive @charset, @namespace and @phonetic-alphabet syntax');
    				}
    				$directive = substr($cssText, $i, $idx - $i);
    				Framework::warn(__METHOD__ . ' @charset, @namespace and @phonetic-alphabet are not handeled. The following rule was removed: ' . $directive . ';');
    				$i = $idx;
    			}
    Ainsi le seul cas où on lancera une exception c'est si la règle ne se termine pas par un point-virgule et est donc mal formée. Dans les autres cas, on se contentera de loguer sa suppression.
 
1453 membres
Aucun membre connecté