Próbuję wygenerować kod JavaScript, używając Text.PrettyPrint
. Problem polega na tym, że nest
wytwarza ogromne wcięcia, gdy umieszcza się je obok innego elementu z ładnym drukiem. Na przykład, w tym kodzie:Text.PrettyPrint: Początkowe wcięcie od lewego marginesu
import Text.PrettyPrint
fun :: Doc
fun = vcat [ text "function" <+> lbrace
, nest 4 $ vcat $ replicate 5 $ text "// foo"
, rbrace
]
var :: Doc
var = text "var" <+> text "x"
test :: Doc
test = var <+> equals <+> fun <> semi
fun
zaczyna się na kolumnę 9 test
(ze względu var <+> equals <> empty
do lewej strony), a tym samym jego kolejne linie są przesunięte o 9 + 4 = 13 kolumny:
var x = function {
// foo
// foo
// foo
// foo
// foo
};
Czy istnieje sposób, aby uczynić wcięcia od lewego marginesu, tak że powyższe byłyby pozbawione zamiast jak
var x = function {
// foo
// foo
// foo
// foo
// foo
};
?
Ładna drukarka Daan Leijen 'wl-pprint' ma bardziej elastyczną obsługę wcięć niż ładna drukarka Hughes Peyton-Jones. Zamiast tego możesz rozważyć użycie go. Zobacz dokumentację do dokumentacji, jest znacznie bardziej szczegółowy niż dokumentacja Haddock. –
Myślę, że 'wl-pprint' okaże się właściwym rozwiązaniem - jestem gotów zaakceptować to jako odpowiedź, jeśli umieścisz to jako takie. – Cactus
@Cactus czy kiedykolwiek pracowałeś z 'wl-pprint'? Jeśli tak, dlaczego nie dodasz na nie odpowiedzi? – Alec