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()
Snippetdetails
- hinzugefügt: 22.11.2008
- aktualisiert: 22.11.2008
- Snippet herunterladen
Kommentar verfassen
Fehler gefunden? Doofer Code? Ein kleines "Danke!"? Hinterlasse einfach einen Kommentar.
Dein Kommentar wird erst nach einer manuellen Prüfung angezeigt.