Du bist hier: StartPython › CSS-BeautifierDieses Snippet kommentieren

Ein primitiver CSS-Beautifier

Dieses Script übernimmt zwei Argumente, die Eingabe- und die Ausgabedatei. Es wird die EInrückung aller Regeln vereinheitlichen und nach jedem Egenschaftsnamen und dem Doppelpunkt ein Leerzeichen einfügen. Selektoren, die mittels Komma getrennt sind, werden in einzelne Zeilen geschrieben.

Das Script setzt voraus, dass jede Regel in einer eigenen Zeile steht. Die öffnende geschweifte Klammer muss in der Zeile des (letzten) Selektors stehen. Die schließende Klammer muss in einer eigenen Zeile stehen.

Zeilen, die das Script nicht erkennt, übernimmt es ungeändert.

import sys
import re

def strip(s):
    return s.strip()

inputfile  = sys.argv[1]
outputfile = open(sys.argv[2], "w")
inBlock    = False
regex      = re.compile("^([a-z-0-9]+)\s*:\s*([^;]+?)\s*;$", re.I)
regex2     = re.compile("^(([a-z0-9_.-]+\s*,\s*)+)([a-z0-9_.-]+)\s* {$", re.I)
regex3     = re.compile("^(([a-z0-9_.-]+\s*,\s*)+)$", re.I)

for line in file(inputfile, "r"):
    line = line.strip()
    
    if len(line) == 0 and inBlock:
        continue
    
    prefix = ""
    
    if inBlock and line != "}":
        prefix = "\t"
    
    if inBlock:
        m = regex.match(line)
        
        if m:
            line = m.group(1)+": "+m.group(2)+";"
    else:
        m = regex2.match(line)
        if m:
            classes = m.group(1).strip()[:-1].split(",")
            classes.append(m.group(3).strip())
            line = ",\n".map(strip, join(classes)) + " {"
        else:
            m = regex3.match(line)
            if m:
                classes = map(strip, m.group(1).strip()[:-1].split(","))
                line = ",\n".join(classes) + ","
    
    outputfile.write(prefix+line+"\n")
    
    if "{" in line:
        inBlock = True
    elif "}" in line:
        inBlock = False

outputfile.close()

Kommentar verfassen

Fehler gefunden? Doofer Code? Ein kleines "Danke!"? Hinterlasse einfach einen Kommentar.

(muss sein)
(muss nicht sein, wird nicht angezeigt)

Dein Kommentar wird erst nach einer manuellen Prüfung angezeigt.