Text.PrettyPrint: Einrückung beginnt am linken Rand

8

Ich versuche Javascript mit Text.PrettyPrint zu generieren. Das Problem ist, dass nest eine riesige Einrückung erzeugt, wenn sie neben ein anderes prettyprinted Element gesetzt wird. Zum Beispiel in diesem Code:

%Vor%

fun beginnt in Spalte 9 in test (wegen var <+> equals <> empty links davon), und folglich sind die folgenden Zeilen um 9 + 4 = 13 Spalten eingerückt:

%Vor%

Gibt es eine Möglichkeit, Einrückungen vom linken Rand darzustellen, so dass das obige stattdessen als

gerendert würde %Vor%

?

    
Cactus 15.03.2012, 02:43
quelle

3 Antworten

2

Die Lösung besteht in der Tat darin, wl-pprint zu verwenden (und nest durch indent zu ersetzen). Dann liefert der angegebene Code

%Vor%

wie gewünscht. Für alle, die noch etwas mit dem Versuch tun wollen, auf pretty zu hacken, beachten Sie, dass obwohl die Konstruktoren für Doc nicht verfügbar sind, Sie trotzdem über Generic mit -XPatternSynonyms :

darauf zugreifen können %Vor%

Das Problem ist meist nicht gegen die vielen Invarianten zu verstoßen, die die Bibliothek unter der Haube hat.

Als Randnotiz fand ich auch wl-pprint-annotated , eine moderne Re -write of wl-pprint , mit dem man Zugriff auf die zugrunde liegenden Datenkonstruktoren hat (auf Kosten der Invarianten). Dies ist eigentlich das Paket, das ich am Ende verwenden werde.

Insbesondere kann ich diese Art von Klammerblock so machen, dass, wenn es klein genug ist, es nur auf einer Linie geht:

%Vor%

Dann bekomme ich schöne Ergebnisse, die automatisch mehrere Zeilen umfassen oder nicht:

%Vor%     
Alec 02.01.2017, 10:22
quelle
2
%Vor%     
ja. 15.03.2012 05:42
quelle
1

Sie können das gewünschte Ergebnis erzielen, indem Sie vcat auf eine Liste anwenden, in der das erste Element auch die Variablendefinition und -zuweisung enthält.

Beispiel:

%Vor%     
Giovanni Cappellotto 30.12.2016 21:38
quelle

Tags und Links