diff options
author | Greg Brown <greg.brown01@ed.ac.uk> | 2023-01-08 00:57:09 +0000 |
---|---|---|
committer | Greg Brown <greg.brown01@ed.ac.uk> | 2023-01-08 00:57:09 +0000 |
commit | 5e7936a7ecd9b3d3e2562d2c810bffa836558dbe (patch) | |
tree | 3492a20641f130e93ff5df04f54fbb7ca9faa215 | |
parent | 9af1a41a58575508c8d2dff6e7b25a5caac8aadc (diff) |
refactor: improve alignment in pretty printing.
-rw-r--r-- | src/Obs/Pretty.idr | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Obs/Pretty.idr b/src/Obs/Pretty.idr index bd163ee..656f352 100644 --- a/src/Obs/Pretty.idr +++ b/src/Obs/Pretty.idr @@ -6,7 +6,7 @@ import public Text.PrettyPrint.Prettyprinter export prettyDecl : (name : Maybe String) -> (ty : Doc ann) -> Doc ann prettyDecl Nothing ty = parens $ group $ align ty -prettyDecl (Just name) ty = parens $ group (pretty name <++> colon <+> line <+> align ty) +prettyDecl (Just name) ty = parens $ align $ group (pretty name <++> colon <+> line <+> align ty) -- names are rendered Open export @@ -17,6 +17,7 @@ prettyDeclForm : (prec : Prec) -> Doc ann prettyDeclForm d decls sep tail = parenthesise (d > Open) $ + align $ group $ concatWith (\x, y => x <++> pretty sep <+> line <+> y) $ decls ++ [align tail] @@ -25,21 +26,24 @@ prettyDeclForm d decls sep tail = export prettyLambda : (prec : Prec) -> (name : String) -> (body : Doc ann) -> Doc ann prettyLambda d name body = - parenthesise (d >= App) $ group $ vsep [backslash <+> pretty name <++> pretty "=>", align body] + parenthesise (d >= App) $ align $ group $ + vsep [backslash <+> pretty name <++> pretty "=>", align body] -- head is rendered Open, tail are rendered App export prettyApp : (prec : Prec) -> (head : Doc ann) -> (tail : List (Doc ann)) -> Doc ann -prettyApp d head tail = parenthesise (d >= App) $ group $ vsep (align head :: map (hang 2) tail) +prettyApp d head tail = + parenthesise (d >= App) $ align $ group $ vsep (align head :: map (hang 2) tail) -- first and second are rendered Open export prettyPair : (first, second : Doc ann) -> Doc ann prettyPair first second = - angles $ group (neutral <++> align first <+> comma <+> line <+> align second <++> neutral) + angles $ align $ group $ + neutral <++> align first <+> comma <+> line <+> align second <++> neutral -- left and right are rendered Equal export prettyEqual : (prec : Prec) -> (left, right : Doc ann) -> Doc ann prettyEqual d left right = - parenthesise (d >= Equal) $ group $ vsep [align left <++> pretty "~", align right] + parenthesise (d >= Equal) $ align $ group $ vsep [align left <++> pretty "~", align right] |