''' <summary>
''' Offusque et nettoie le code
''' </summary>
''' <param name="CSSFile">Source CSS</param>
''' <remarks></remarks>
Private Sub ObfuscateCSS(ByRef CSSFile As String)
'Suppression des retours à la ligne
CSSFile = CSSFile.Replace(ControlChars.NewLine, "")
'Suppression des commentaires
Dim CommentsRegEx As New Regex("/\*[\d\D]*?\*/")
CSSFile = CommentsRegEx.Replace(CSSFile, "")
'Remplacement des tabulations par des espaces
CSSFile = CSSFile.Replace(ControlChars.Tab, " ")
'Nettoyage complet du CSS
Dim NewCSS As String = Nothing
'On extrait un bloc (Nom de la classe + propriétés)
For Each Block As String In CSSFile.Split("}"c)
'On extrait les noms des classes concernées
If Block.Trim().Split("{"c).Length < 2 Then Exit For
Dim ClassesNames() As String = Block.Trim().Split("{"c)(0).Trim().Split(","c)
'Pour chaque nom de classe
For Each ClassName As String In ClassesNames
If String.IsNullOrEmpty(ClassName) Then Exit For
'On nettoie le nom de la classe
For Each NamePart As String In ClassName.Trim().Split(" ")
If Not String.IsNullOrEmpty(NamePart) Then NewCSS &= NamePart.Trim() & " "
Next
NewCSS = NewCSS.TrimEnd(" ") ' On supprime l'espace en trop
NewCSS &= "," 'On ajoute une virgule
Next
NewCSS = NewCSS.TrimEnd(",") 'On supprime la virgule en trop
NewCSS &= "{" 'On ajoute la première accolade
'On extrait les couples propriétés-valeurs
Dim PropertiesValues() As String = Block.Trim().Split("{"c)(1).Trim().Split(";"c)
'Pour chaque couple
For Each PropertyValue As String In PropertiesValues
If String.IsNullOrEmpty(PropertyValue.Trim()) Then Exit For
'On ajoute la propriété et la valeur
NewCSS &= PropertyValue.Split(":"c)(0).Trim() & ":" & PropertyValue.Split(":"c)(1).Trim() & ";"
Next
NewCSS &= "}" 'On ajoute la dernière accolade
Next
'On retourne le nouveau CSS
CSSFile = NewCSS
End Sub