Showcase.md: Update to hindent-5.2.1 results; Add haskell-formatter output

pull/8/head
Lennart Spitzner 2016-09-04 22:20:49 +02:00 committed by GitHub
parent eead525c16
commit e83b4c94db
1 changed files with 123 additions and 211 deletions

View File

@ -140,215 +140,60 @@ layoutBriDoc ast briDoc = do
return $ ()
~~~~
In contrast, let us look at Chris Done's `hindent` (version `4.6.4`) re-formatting results for the same input, with three different styles:
In contrast, let us look at Chris Done's `hindent` (version `5.2.1`) re-formatting results for the same input:
## `hindent --style johan-tibell` output
## `hindent` output
~~~~ .hs
-- 10 20 30 40 50 60 70 80
module Language.Haskell.Brittany.BriLayouter
(layoutBriDoc)
where
( layoutBriDoc
) where
layoutBriDoc
:: Data.Data.Data ast
=> ast -> BriDocNumbered -> PPM ()
layoutBriDoc ast briDoc = do
-- first step: transform the briDoc.
briDoc' <-
MultiRWSS.withMultiStateS BDEmpty $
do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $
briDocToDoc $ unwrapBriDocNumbered $ briDoc
-- bridoc transformation: remove alts
transformAlts
briDoc >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&>
transformSimplifyFloating >>=
mSet
mGet >>=
traceIfDumpConf
"bridoc post-floating"
_dconf_dump_bridoc_simpl_floating .
briDocToDoc
-- bridoc transformation: par removal
mGet <&>
transformSimplifyPar >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&>
transformSimplifyColumns >>=
mSet
mGet >>=
traceIfDumpConf
"bridoc post-columns"
_dconf_dump_bridoc_simpl_columns .
briDocToDoc
-- -- bridoc transformation: indent
mGet <&>
transformSimplifyIndent >>=
mSet
mGet >>=
traceIfDumpConf
"bridoc post-indent"
_dconf_dump_bridoc_simpl_indent .
briDocToDoc
mGet >>=
traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final .
briDocToDoc
-- -- convert to Simple type
-- simpl <- mGet <&> transformToSimple
-- return simpl
anns :: ExactPrint.Types.Anns <- mAsk
let filteredAnns = filterAnns ast anns
let state =
LayoutState
{ _lstate_baseY = 0
, _lstate_curY = 0
, _lstate_indLevel = 0
, _lstate_indLevelLinger = 0
, _lstate_commentsPrior = extractCommentsPrior filteredAnns
, _lstate_commentsPost = extractCommentsPost filteredAnns
, _lstate_commentCol = Nothing
, _lstate_addSepSpace = Nothing
, _lstate_inhibitMTEL = False
, _lstate_isNewline = NewLineStateInit
}
state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc'
let remainingComments =
Map.elems (_lstate_commentsPrior state') ++
Map.elems (_lstate_commentsPost state')
remainingComments `forM_`
(mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst)
return $ ()
~~~~
## `hindent --style chris-done` output
~~~~ .hs
-- 10 20 30 40 50 60 70 80
module Language.Haskell.Brittany.BriLayouter
(layoutBriDoc)
where
layoutBriDoc :: Data.Data.Data ast
=> ast -> BriDocNumbered -> PPM ()
layoutBriDoc ast briDoc =
do
-- first step: transform the briDoc.
briDoc' <-
MultiRWSS.withMultiStateS BDEmpty $
do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $
briDocToDoc $ unwrapBriDocNumbered $ briDoc
-- bridoc transformation: remove alts
transformAlts briDoc >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&>
transformSimplifyFloating >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-floating" _dconf_dump_bridoc_simpl_floating .
briDocToDoc
-- bridoc transformation: par removal
mGet <&>
transformSimplifyPar >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&>
transformSimplifyColumns >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-columns" _dconf_dump_bridoc_simpl_columns .
briDocToDoc
-- -- bridoc transformation: indent
mGet <&>
transformSimplifyIndent >>=
mSet
mGet >>=
traceIfDumpConf "bridoc post-indent" _dconf_dump_bridoc_simpl_indent .
briDocToDoc
mGet >>=
traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final .
briDocToDoc
-- -- convert to Simple type
-- simpl <- mGet <&> transformToSimple
-- return simpl
anns :: ExactPrint.Types.Anns <- mAsk
let filteredAnns = filterAnns ast anns
let state =
LayoutState {_lstate_baseY = 0
,_lstate_curY = 0
,_lstate_indLevel = 0
,_lstate_indLevelLinger = 0
,_lstate_commentsPrior =
extractCommentsPrior filteredAnns
,_lstate_commentsPost = extractCommentsPost filteredAnns
,_lstate_commentCol = Nothing
,_lstate_addSepSpace = Nothing
,_lstate_inhibitMTEL = False
,_lstate_isNewline = NewLineStateInit}
state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc'
let remainingComments =
Map.elems (_lstate_commentsPrior state') ++
Map.elems (_lstate_commentsPost state')
remainingComments `forM_`
(mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst)
return $ ()
~~~~
## `hindent --style gibiansky` output
note that it managed to garbage the first comment to `-- 10 20 30 40 50 60 70 80` which i replaced again afterwards.
~~~~ .hs
-- 10 20 30 40 50 60 70 80
module Language.Haskell.Brittany.BriLayouter (layoutBriDoc) where
layoutBriDoc :: Data.Data.Data ast => ast -> BriDocNumbered -> PPM ()
layoutBriDoc ast briDoc = do
-- first step: transform the briDoc.
briDoc' <- MultiRWSS.withMultiStateS BDEmpty $ do
traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $ briDocToDoc $ unwrapBriDocNumbered $ briDoc
-- bridoc transformation: remove alts
transformAlts briDoc >>= mSet
mGet >>= traceIfDumpConf "bridoc post-alt"
_dconf_dump_bridoc_simpl_alt . briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyFloating >>= mSet
mGet >>= traceIfDumpConf "bridoc post-floating"
_dconf_dump_bridoc_simpl_floating . briDocToDoc
-- bridoc transformation: par removal
mGet <&> transformSimplifyPar >>= mSet
mGet >>= traceIfDumpConf "bridoc post-par"
_dconf_dump_bridoc_simpl_par . briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyColumns >>= mSet
mGet >>= traceIfDumpConf "bridoc post-columns"
_dconf_dump_bridoc_simpl_columns . briDocToDoc
-- -- bridoc transformation: indent
mGet <&> transformSimplifyIndent >>= mSet
mGet >>= traceIfDumpConf "bridoc post-indent"
_dconf_dump_bridoc_simpl_indent . briDocToDoc
mGet >>= traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . briDocToDoc
-- -- convert to Simple type simpl <- mGet <&> transformToSimple return simpl
:: Data.Data.Data ast
=> ast -> BriDocNumbered -> PPM ()
layoutBriDoc ast briDoc
-- first step: transform the briDoc.
= do
briDoc' <-
MultiRWSS.withMultiStateS BDEmpty $ do
traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $
briDocToDoc $ unwrapBriDocNumbered $ briDoc
-- bridoc transformation: remove alts
transformAlts briDoc >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-alt" _dconf_dump_bridoc_simpl_alt .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyFloating >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-floating" _dconf_dump_bridoc_simpl_floating .
briDocToDoc
-- bridoc transformation: par removal
mGet <&> transformSimplifyPar >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-par" _dconf_dump_bridoc_simpl_par .
briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyColumns >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-columns" _dconf_dump_bridoc_simpl_columns .
briDocToDoc
-- -- bridoc transformation: indent
mGet <&> transformSimplifyIndent >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-indent" _dconf_dump_bridoc_simpl_indent .
briDocToDoc
mGet >>=
traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final . briDocToDoc
-- -- convert to Simple type
-- simpl <- mGet <&> transformToSimple
-- return simpl
anns :: ExactPrint.Types.Anns <- mAsk
let filteredAnns = filterAnns ast anns
let state = LayoutState
let state =
LayoutState
{ _lstate_baseY = 0
, _lstate_curY = 0
, _lstate_indLevel = 0
@ -360,17 +205,84 @@ layoutBriDoc ast briDoc = do
, _lstate_inhibitMTEL = False
, _lstate_isNewline = NewLineStateInit
}
state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc'
let remainingComments = Map.elems (_lstate_commentsPrior state') ++ Map.elems
(_lstate_commentsPost
state')
remainingComments `forM_` (mTell .
(: []) .
LayoutErrorUnusedComment .
show .
fmap fst)
let remainingComments =
Map.elems (_lstate_commentsPrior state') ++
Map.elems (_lstate_commentsPost state')
remainingComments `forM_`
(mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst)
return $ ()
~~~~
and haskell-formatter (version 1.0.0)
## `haskell-formatter` output
~~~~ .hs
-- 10 20 30 40 50 60 70 80
module Language.Haskell.Brittany.BriLayouter (layoutBriDoc) where
layoutBriDoc :: Data.Data.Data ast => ast -> BriDocNumbered -> PPM ()
layoutBriDoc ast briDoc
-- first step: transform the briDoc.
= do briDoc' <- MultiRWSS.withMultiStateS BDEmpty $
do traceIfDumpConf "bridoc raw" _dconf_dump_bridoc_raw $
briDocToDoc $ unwrapBriDocNumbered $ briDoc
-- bridoc transformation: remove alts
transformAlts briDoc >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-alt"
_dconf_dump_bridoc_simpl_alt
. briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyFloating >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-floating"
_dconf_dump_bridoc_simpl_floating
. briDocToDoc
-- bridoc transformation: par removal
mGet <&> transformSimplifyPar >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-par"
_dconf_dump_bridoc_simpl_par
. briDocToDoc
-- bridoc transformation: float stuff in
mGet <&> transformSimplifyColumns >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-columns"
_dconf_dump_bridoc_simpl_columns
. briDocToDoc
-- -- bridoc transformation: indent
mGet <&> transformSimplifyIndent >>= mSet
mGet >>=
traceIfDumpConf "bridoc post-indent"
_dconf_dump_bridoc_simpl_indent
. briDocToDoc
mGet >>=
traceIfDumpConf "bridoc final" _dconf_dump_bridoc_final
. briDocToDoc
-- -- convert to Simple type
-- simpl <- mGet <&> transformToSimple
-- return simpl
anns :: ExactPrint.Types.Anns <- mAsk
let filteredAnns = filterAnns ast anns
let state
= LayoutState{_lstate_baseY = 0, _lstate_curY = 0,
_lstate_indLevel = 0, _lstate_indLevelLinger = 0,
_lstate_commentsPrior =
extractCommentsPrior filteredAnns,
_lstate_commentsPost =
extractCommentsPost filteredAnns,
_lstate_commentCol = Nothing,
_lstate_addSepSpace = Nothing,
_lstate_inhibitMTEL = False,
_lstate_isNewline = NewLineStateInit}
state' <- MultiRWSS.withMultiStateS state $ layoutBriDocM briDoc'
let remainingComments
= Map.elems (_lstate_commentsPrior state') ++
Map.elems (_lstate_commentsPost state')
remainingComments `forM_`
(mTell . (: []) . LayoutErrorUnusedComment . show . fmap fst)
return $ ()
~~~~