ormolu-0.1.1.0: src/Ormolu/Processing/Postprocess.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ViewPatterns #-}
-- | Postprocessing for the results of printing.
module Ormolu.Processing.Postprocess
( postprocess,
)
where
import Data.Text (Text)
import qualified Data.Text as T
import Ormolu.Processing.Common
import qualified Ormolu.Processing.Cpp as Cpp
-- | Postprocess output of the formatter.
postprocess ::
-- | Desired indentation level
Int ->
-- | Input to process
Text ->
Text
postprocess indent =
T.unlines
. fmap indentLine
. fmap Cpp.unmaskLine
. filter (not . magicComment)
. T.lines
where
magicComment (T.stripStart -> x) =
x == startDisabling || x == endDisabling
indentLine x = T.replicate indent " " <> x