How to avoid trailing whitespace generated by Text.PrettyPrint.HughesPJ?

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Fri Mar 8 22:22:35 CET 2013


On 8 March 2013 23:10, Peter Simons <simons at cryp.to> wrote:
> Hi guys,
>
> it seems to me like the HughesPJ pretty printer has trouble dealing with
> empty lines in a nested environment. Consider the following example:
>
>> import Text.PrettyPrint.HughesPJ
>> test1 = putStrLn $ render $ nest 4 $ vcat $ map text [ "line 1", "", "line 2" ]
>
> The 'test1' function prints the following output, where blanks have been
> replaced by underscores to make them visible:
>
>   *Main> test1
>   ____line_1
>   ____
>   ____line_2
>
> Now, I would like to avoid this kind of trailing whitespace in the
> document I'm generated -- but how? My first thought was to replace
> text "" by empty, but that change effectively removes the empty line
> altogether:
>
>> test2 = putStrLn $ render $ nest 4 $ vcat $ [ text "line 1", empty , text "line 2" ]
>
>   *Main> test2
>   ____line_1
>   ____line_2
>
> Is there another way to accomplish what I want?

The pretty-printer is doing what it _should_ be doing here (namely
indenting everything in that block); to get rid of unneeded trailing
whitespace the only thing I can think of is to post-process the output
(e.g.: unlines . reverse . dropWhile isSpace .  reverse . lines).

>
> Take care,
> Peter
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com



More information about the Libraries mailing list