module Language.Haskell.Formatter.Source
(Comments.Comment, ExactPrint.exactPrint, Exts.parseFileContents,
Exts.parseFileContentsWithComments, Parser.defaultParseMode,
Parser.parseFilename, Parser.ParseResult(..),
module Language.Haskell.Exts.Pretty, (Syntax.=~=), Syntax.Module,
createComment, commentCore)
where
import qualified Language.Haskell.Exts as Exts
import qualified Language.Haskell.Exts.Comments as Comments
import qualified Language.Haskell.Exts.ExactPrint as ExactPrint
import qualified Language.Haskell.Exts.Parser as Parser
import Language.Haskell.Exts.Pretty
import qualified Language.Haskell.Exts.Syntax as Syntax
import qualified Language.Haskell.Formatter.CommentCore as CommentCore
import qualified Language.Haskell.Formatter.Location as Location
createComment :: CommentCore.CommentCore -> Location.SrcSpan -> Comments.Comment
createComment core portion = Comments.Comment isMultiLine portion content
where isMultiLine
= case CommentCore.kind core of
CommentCore.Ordinary -> False
CommentCore.Nested -> True
content = CommentCore.content core
commentCore :: Comments.Comment -> CommentCore.CommentCore
commentCore comment = CommentCore.create kind content
where kind = commentKind comment
content = commentContent comment
commentKind :: Comments.Comment -> CommentCore.Kind
commentKind (Comments.Comment False _ _) = CommentCore.Ordinary
commentKind (Comments.Comment True _ _) = CommentCore.Nested
commentContent :: Comments.Comment -> String
commentContent (Comments.Comment _ _ content) = content