{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RecordWildCards #-}
module Ormolu.Printer
( printSnippets,
)
where
import Data.Text (Text)
import Data.Text qualified as T
import Ormolu.Parser.Result
import Ormolu.Printer.Combinators
import Ormolu.Printer.Meat.Module
import Ormolu.Printer.SpanStream
import Ormolu.Processing.Common
printSnippets ::
[SourceSnippet] ->
Text
printSnippets :: [SourceSnippet] -> Text
printSnippets = [Text] -> Text
T.concat forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap SourceSnippet -> Text
printSnippet
where
printSnippet :: SourceSnippet -> Text
printSnippet = \case
ParsedSnippet ParseResult {Int
[([LComment], Pragma)]
Maybe LComment
HsModule GhcPs
EnumSet Extension
CommentStream
ModuleFixityMap
SourceType
prIndent :: ParseResult -> Int
prModuleFixityMap :: ParseResult -> ModuleFixityMap
prExtensions :: ParseResult -> EnumSet Extension
prCommentStream :: ParseResult -> CommentStream
prPragmas :: ParseResult -> [([LComment], Pragma)]
prStackHeader :: ParseResult -> Maybe LComment
prSourceType :: ParseResult -> SourceType
prParsedSource :: ParseResult -> HsModule GhcPs
prIndent :: Int
prModuleFixityMap :: ModuleFixityMap
prExtensions :: EnumSet Extension
prCommentStream :: CommentStream
prPragmas :: [([LComment], Pragma)]
prStackHeader :: Maybe LComment
prSourceType :: SourceType
prParsedSource :: HsModule GhcPs
..} ->
Int -> Text -> Text
reindent Int
prIndent forall a b. (a -> b) -> a -> b
$
R ()
-> SpanStream
-> CommentStream
-> SourceType
-> EnumSet Extension
-> ModuleFixityMap
-> Text
runR
( Maybe LComment -> [([LComment], Pragma)] -> HsModule GhcPs -> R ()
p_hsModule
Maybe LComment
prStackHeader
[([LComment], Pragma)]
prPragmas
HsModule GhcPs
prParsedSource
)
(forall a. Data a => a -> SpanStream
mkSpanStream HsModule GhcPs
prParsedSource)
CommentStream
prCommentStream
SourceType
prSourceType
EnumSet Extension
prExtensions
ModuleFixityMap
prModuleFixityMap
RawSnippet Text
r -> Text
r