Seite 1 von 1

HTML optimizer <span - table> (jEdit)

Verfasst: Mittwoch 8. Juni 2005, 13:04
von Olliminatore
Vorweg: Kommentare , Fragen, Vorschläge... sind erwünscht. :mrgreen:

Ich habe auf Basis des Scraper Modules mir ein HTML-Parser als Code-optimizer
geschrieben. Es sind 2 Stufen(doppelt ausführen) möglich, wobei sich das Erscheinungsbild nach der 1. nicht verändern sollte.

Im Grunde sind es nur 2 Funktionen die 1. löscht unnötige <SPAN>tags (ein sogenanntes"Allgemeines Inline-Element"-siehe SelfHtml)
Wenn dieses keine Attribute besitzt oder wenn es welche hat und es mehrfach hintereinander vorkommt.

Die Zweite ist speziell auf, mit Zeilennummern Dokumentierten Script-code optimiert.
Sie fast alle <SPAN>tags vom Typ "gutter"(Zeilennummern) zusammen und unterteilt das gesamte Dokument in 2 Tabellenspalten. Somit wird besonders bei längeren ScriptDokus eine menge Code gesparrt.

Grund für dieses Script war der schlechte HTML Code(Css) der speziell mit dem jEdit Plugin Code2HTML erzeugt wird. Mit diesem Script müssten die Seiten weniger als halb so groß werden. :) Eigentlich könnte man das JavaPlugin verbessern, aber hoch lebe Python. :-P

Hier ist das Modul natürlich als Referenz Code ;) . Kommentare mit ## sind von mir.
Am Basis Code habe ich im Prinzip nichts geändert, nur die Variable "outlist" wurde der Scraper-class zugewiesen.

Kennt jemand andere Module dieser Art?

Verfasst: Mittwoch 8. Juni 2005, 13:43
von jens
Willst du damit Python-Sourcecode nach HTML wandeln???

Könnte ich auch gebrauchen ;)

Hab zwar schon ein Python2HTML Konverter. Das ganze basiert auf dem MoinMoin - Python Source Parser, aber der Code ist auch nicht wirklich schön...

Verfasst: Mittwoch 8. Juni 2005, 15:01
von Olliminatore
Ja, genau.
Man/Wir könnten das beste aus allen 3 Modulen vereinen. :D
So dass kein jEdit für Python mehr benötigt wird.

<offtopic>
Bin geschockt, habe gerade das mit Dookie gelesen.

Verfasst: Mittwoch 8. Juni 2005, 15:19
von jens
Also der beste Ansatz wäre natürlich den "MoinMoin - Python Source Parser" umzubauen, um direkt guten Code zu erzeugen... Schön wäre natürlich eine richtige Trennung zwischen HTML und CSS ;)

In der jetzigen Version mach der aus dem:

Code: Alles auswählen


import os

for Verz, VerzList, DateiListe in os.walk("C:\\"):
    print Verz
    for Datei in DateiListe:
        print Datei
das:

Code: Alles auswählen

<pre><font face="Lucida,Courier New"><font color="#C00000">import</font> <font color="#000000">os</font>

<font color="#C00000">for</font> <font color="#000000">Verz</font><font color="#0000C0">,</font> <font color="#000000">VerzList</font><font color="#0000C0">,</font> <font color="#000000">DateiListe</font> <font color="#C00000">in</font> <font color="#000000">os</font><font color="#0000C0">.</font><font color="#000000">walk</font><font color="#0000C0">(</font><font color="#004080">"C:\\"</font><font color="#0000C0">)</font><font color="#0000C0">:</font>

    <font color="#C00000">print</font> <font color="#000000">Verz</font>
    <font color="#C00000">for</font> <font color="#000000">Datei</font> <font color="#C00000">in</font> <font color="#000000">DateiListe</font><font color="#0000C0">:</font>
        <font color="#C00000">print</font> <font color="#000000">Datei</font><font color="#000000"></font></font></pre>
Wie man sieht produziert es unnötigen Code, weil er für jedes Token seperat ein font-Tag setzt, obwohl es oft kombinierbar ist. Somit ist es nicht damit getan, aus den font-Tags einfach z.B. <span class...-Tags zu machen...

Verfasst: Mittwoch 8. Juni 2005, 16:51
von Olliminatore
Ja genau, dafür schafft meine 1. Funktion (Zeile 204) abhilfe. ;)
Wir müssten das Modul(MoinMoin) so umschreiben dass es diese Gleichnisse/Ungleichheit schon vorher erkennt.
Meine Funktionen setzen ja erstmal "nur" auf schon vorhandenes HTML an.

Edit: Nach W3-Konsortium ist das Inline-Element <font>tag auch deprecated.
Meine Funktion habe ich nochmal nachgebessert, Attribut-namen werden nun alle klein geschrieben. (das Code2HTML Plugin schreibt fälschlicher weise alle gross)

Verfasst: Mittwoch 8. Juni 2005, 21:10
von Leonidas
Kennt ihr schon SilverCity? Das ist der Lexer von SciTE, wird auch beim Generieren der Quellcodes in der reST Doku von DrPython verwendet.

Verfasst: Mittwoch 8. Juni 2005, 21:15
von jens
Ist wirklich nicht schlecht, da auch einige Sprachen direkt unterstützt werden ;) Dr erzeugte Code basiert auf CSS... Ist zwar auch nicht super klein, aber geht wohl auch nicht besser...

Es gibt da auch direkt eine Online-CGI-DEMO:
http://www.sweetapp.com/cgi-bin/cgi-sty ... plate.html

Wenn ich mal soweit bin, werde ich es in PyLucid einbauen, damit man Source-Code anschauen kann ;)


EDIT: Leider muß man SilverCity installieren, wie man hier http://www.python-forum.de/viewtopic.php?t=3524 nachlesen kann, somit fällt es für mich erstmal Flach...
Derweilen habe ich TinyTextile geschrieben: http://www.python-forum.de/viewtopic.php?t=3523

EDIT2: http://pylucid.python-hosting.com/file/ ... Textile.py