Go: Wie würdest du "Pretty Print" / "Prettify" HTML?

7

In Python, PHP und vielen anderen Sprachen ist es möglich, ein HTML-Dokument zu konvertieren und es zu "verschönern". In Go ist dies sehr einfach für JSON und XML (von einer Struktur / Schnittstelle) mit der MarshIndent-Funktion.

Beispiel für XML in Go:

Ссылка

%Vor%

Dies funktioniert jedoch nur, um struct / interface in ein [] Byte umzuwandeln. Was ich will, ist eine Zeichenfolge von HTML-Code konvertieren und automatisch einrücken. Beispiel:

Rohes HTML

%Vor%

Prettifiziertes HTML

%Vor%

Wie würde dies nur mit einer Zeichenfolge gemacht?

    
Xplane 14.01.2014, 15:21
quelle

5 Antworten

10

Ich hatte das gleiche Problem und habe es gelöst, indem ich in Go selbst ein HTML-Formatierungspaket erstellt habe.

Hier ist es:

GoHTML - HTML-Formatierer für Go

Bitte überprüfen Sie dieses Paket.

Danke,

Keiji

    
Keiji Yoshida 25.04.2014, 06:42
quelle
7

Ich habe diese Frage gefunden, als ich versuchte, herauszufinden, wie man in Go schön drucken kann. Da ich die Antwort nirgendwo gefunden habe, hier ist meine Lösung:

%Vor%     
Chris Pushbullet 26.11.2014 04:05
quelle
2

BEARBEITEN: Eine gute Möglichkeit gefunden, den XML-Parser zu verwenden:

%Vor%

gibt Folgendes aus:

%Vor%     
Not_a_Golfer 14.01.2014 15:31
quelle
2

Kurze Antwort

Verwenden Sie diese HTML-Prettyprint-Bibliothek für Go (die ich geschrieben habe, * uhum *). Es hat einige Tests und funktioniert für grundlegende Eingaben und wird hoffentlich im Laufe der Zeit robuster, obwohl es momentan nicht sehr robust ist. Beachten Sie den Abschnitt Bekannte Probleme in der Infodatei.

Lange Antwort

Mit code.google.com/

können Sie Ihren eigenen HTML-Prettifier für einfache Fälle leicht rollen. p / go.net / html Paket (das macht das obige Paket). Hier ist eine sehr einfache Prettify-Funktion, die auf diese Weise implementiert ist:

%Vor%

Es behandelt einfache Beispiele wie das von Ihnen bereitgestellte. Zum Beispiel

%Vor%

gibt Folgendes aus:

%Vor%

Beachten Sie jedoch, dass dieser einfache Ansatz noch nicht mit HTML-Kommentaren fertig wird und auch keine vollständig gültigen selbstschließenden HTML5-Tags verarbeitet, die nicht XHTML-konform sind, wie <br> , Whitespaces werden nicht garantiert erhalten und eine ganze Reihe anderer Randfälle, an die ich noch nicht gedacht habe. Verwenden Sie es nur als Referenz, Spielzeug oder Ausgangspunkt:)

    
Herman Schaaf 20.01.2014 12:30
quelle
2

Sie können den HTML-Code mit code.google.com/p/go.net/html analysieren und eine eigene Version der Render-Funktion aus diesem Paket erstellen - eine, die den Einzug verfolgt.

Aber ich warne Sie: Sie müssen beim Hinzufügen und Entfernen von Leerzeichen in HTML vorsichtig sein. Obwohl Leerzeichen normalerweise nicht signifikant sind, können Sie im gerenderten Text Leerzeichen einfügen und verschwinden lassen, wenn Sie nicht vorsichtig sind.

Bearbeiten:

Hier ist eine hübsche Druckerfunktion, die ich kürzlich geschrieben habe. Es behandelt einige der Sonderfälle, aber nicht alle.

%Vor%     
andybalholm 14.01.2014 18:13
quelle