@@ -1,3 +1,22 @@
11module Ormolu.Parser
2− ( )
2+ ( parseModule )
33where
4+
5+import Language.Haskell.GHC.ExactPrint.Parsers hiding (parseModule)
6+import Language.Haskell.GHC.ExactPrint.Types
7+import Ormolu.Type
8+import qualified CmdLineParser as GHC
9+import qualified DynFlags as GHC
10+import qualified GHC hiding (parseModule)
11+
12+-- | Parse a complete module from string.
13+
14+parseModule
15+ :: [DynOption] -- ^ Dynamic options that affect parsing
16+ -> FilePath -- ^ File name (only for source location annotations)
17+ -> String -- ^ Input for parser
18+ -> IO ([GHC.Warn], Either (GHC.SrcSpan, String) (Anns, GHC.ParsedSource))
19+parseModule dynOpts path input = ghcWrapper $ do
20+ dynFlags0 <- initDynFlagsPure path input
21+ (dynFlags1, _, ws) <- GHC.parseDynamicFilePragma dynFlags0 (dynOption <$> dynOpts)
22+ return (ws, parseModuleFromStringInternal dynFlags1 path input)