- Ymox,
Bonsoir à tous !
Suite à quelques projets menés tambours battants, il va me falloir nettoyer du code SCSS qui en a pâti. Comme les sites s’affichent correctement, l’idée serait donc de reprendre le fichier CSS "utile" proposé par les outils du navigateur et de l’analyser pour en refaire l’arbre proche du SCSS souhaité. Au pire, une analyse au niveau des paires propriété ⇔ valeur, si je les utilise sous forme clé ⇔ valeur dans un tableau, je ne conserve que la dernière utilisée — ah, il me faudra regarder s’il n’y a pas un !important
qui passe dans le coin, j’y pense maintenant.
Récupérer les propriétés et leurs valeurs, c’est pas difficile, au final. Le souci est de recréer les éléments de l’arbre à partir d’une chaîne de type #General .toto a #tagada.tsointsoin:hover
pour mettre les paires nécessaires dans $finalSelectors['#General']['.toto']['a']['#tagada']['&.tsointsoin']['&:hover']
. Certes, un bon preg_split()
devrait permettre de récupérer les différents index à utiliser, mais ce que je me pose comme question, c’est comment faire pour passer de cette suite linéaire crachée par preg_split()
à un élément qui "a plusieurs dimensions" ? Si j’étais fou, je ferais quelque chose comme eval("$selectors['" . implode("']['", $arraySelectors) . "']");
, mais justement…
Le souci est donc que — l’heure n’aidant probablement pas trop —, je ne vois pas d’autre manière de faire qui soit rapide, sachant que j’ai déjà deux boucles imbriquées à ce stade de l’algorithme, la première fonctionnant sur l’entier de la source, et la seconde sur les sélecteurs séparés par des virgules1.
Est-ce que quelqu’un verrait une manière de faire ?
Merci d’avance
-
Cas pas très courant si on part d’un CSS générés depuis du SCSS/SASS, mais si on voulait faire de la rétroingénierie "correcte", comme on combine plusieurs sélecteurs en un, on doit dupliquer les règles. ↩