diff --git a/gf.cabal b/gf.cabal index 370ca8cd8..00eb5654d 100644 --- a/gf.cabal +++ b/gf.cabal @@ -141,6 +141,7 @@ Library hs-source-dirs: src/compiler exposed-modules: GF + GF.Support GF.Text.Pretty other-modules: diff --git a/src/compiler/GF.hs b/src/compiler/GF.hs index 6fff0b3cb..b41a75f37 100644 --- a/src/compiler/GF.hs +++ b/src/compiler/GF.hs @@ -16,16 +16,7 @@ module GF( module GF.Grammar.Printer, module GF.Infra.Ident, -- ** Binary serialisation - module GF.Grammar.Binary, - - -- * Supporting infrastructure and system utilities - module GF.Infra.Location, - module GF.Data.Operations, - module GF.Infra.UseIO, - module GF.Infra.Option, - module GF.System.Console, - -- ** Binary serialisation - Binary,encode,decode,encodeFile,decodeFile + module GF.Grammar.Binary ) where import GF.Main import GF.Compiler @@ -41,10 +32,3 @@ import GF.Grammar.Macros import GF.Grammar.Printer import GF.Infra.Ident import GF.Grammar.Binary - -import GF.Infra.Location -import GF.Data.Operations -import GF.Infra.Option -import GF.Infra.UseIO -import GF.System.Console -import Data.Binary diff --git a/src/compiler/GF/Infra/Option.hs b/src/compiler/GF/Infra/Option.hs index 9785f6895..6bcbe3851 100644 --- a/src/compiler/GF/Infra/Option.hs +++ b/src/compiler/GF/Infra/Option.hs @@ -1,6 +1,7 @@ module GF.Infra.Option ( - -- ** Option types + -- ** Command line options + -- *** Option types Options, Flags(..), Mode(..), Phase(..), Verbosity(..), @@ -8,21 +9,21 @@ module GF.Infra.Option SISRFormat(..), Optimization(..), CFGTransform(..), HaskellOption(..), Dump(..), Pass(..), Recomp(..), outputFormatsExpl, - -- ** Option parsing + -- *** Option parsing parseOptions, parseModuleOptions, fixRelativeLibPaths, - -- ** Option pretty-printing + -- *** Option pretty-printing optionsGFO, optionsPGF, - -- ** Option manipulation + -- *** Option manipulation addOptions, concatOptions, noOptions, modifyFlags, helpMessage, - -- ** Checking specific options + -- *** Checking specific options flag, cfgTransform, haskellOption, readOutputFormat, isLexicalCat, isLiteralCat, renameEncoding, getEncoding, defaultEncoding, - -- ** Setting specific options + -- *** Setting specific options setOptimization, setCFGTransform, - -- ** Convenience methods for checking options + -- *** Convenience methods for checking options verbAtLeast, dump ) where diff --git a/src/compiler/GF/Infra/UseIO.hs b/src/compiler/GF/Infra/UseIO.hs index b9ff9c2e5..b5ef38f49 100644 --- a/src/compiler/GF/Infra/UseIO.hs +++ b/src/compiler/GF/Infra/UseIO.hs @@ -12,8 +12,9 @@ -- (Description of the module) ----------------------------------------------------------------------------- -module GF.Infra.UseIO(module GF.Infra.UseIO, - -- ** Reused +module GF.Infra.UseIO(-- ** Files and IO + module GF.Infra.UseIO, + -- *** Reused MonadIO(..),liftErr) where import Prelude hiding (catch) @@ -40,7 +41,7 @@ import Control.Exception(evaluate) --putIfVerb :: MonadIO io => Options -> String -> io () putIfVerb opts msg = when (verbAtLeast opts Verbose) $ putStrLnE msg --- ** GF files path and library path manipulation +-- *** GF files path and library path manipulation type FileName = String type InitPath = String -- ^ the directory portion of a pathname @@ -123,7 +124,7 @@ splitInModuleSearchPath s = case break isPathSep s of -- --- ** IO monad with error; adapted from state monad +-- *** Error handling in the IO monad -- | Was: @newtype IOE a = IOE { appIOE :: IO (Err a) }@ type IOE a = IO a @@ -177,7 +178,7 @@ die :: String -> IO a die s = do hPutStrLn stderr s exitFailure --- ** Diagnostic output +-- *** Diagnostic output class Monad m => Output m where ePutStr, ePutStrLn, putStrE, putStrLnE :: String -> m () @@ -215,7 +216,7 @@ ioErrorText e = if isUserError e then ioeGetErrorString e else show e --- ** Timing +-- *** Timing timeIt act = do t1 <- liftIO $ getCPUTime @@ -223,7 +224,7 @@ timeIt act = t2 <- liftIO $ getCPUTime return (t2-t1,a) --- ** File IO +-- *** File IO writeUTF8File :: FilePath -> String -> IO () writeUTF8File fpath content = diff --git a/src/compiler/GF/Support.hs b/src/compiler/GF/Support.hs new file mode 100644 index 000000000..a4baf63c9 --- /dev/null +++ b/src/compiler/GF/Support.hs @@ -0,0 +1,17 @@ +module GF.Support( + -- * Supporting infrastructure and system utilities + module GF.Infra.Location, + module GF.Infra.Option, + module GF.Data.Operations, + module GF.Infra.UseIO, + module GF.System.Console, + -- ** Binary serialisation + Binary,encode,decode,encodeFile,decodeFile + ) where + +import GF.Infra.Location +import GF.Data.Operations +import GF.Infra.Option +import GF.Infra.UseIO +import GF.System.Console +import Data.Binary diff --git a/src/compiler/GF/System/Console.hs b/src/compiler/GF/System/Console.hs index 37eac816d..e064b9869 100644 --- a/src/compiler/GF/System/Console.hs +++ b/src/compiler/GF/System/Console.hs @@ -1,8 +1,9 @@ {-# LANGUAGE CPP #-} module GF.System.Console( - -- ** Changing which character encoding to use for console IO + -- ** Console IO + -- *** Changing which character encoding to use for console IO setConsoleEncoding,changeConsoleEncoding, - -- ** Console colors + -- *** Console colors TermColors(..),getTermColors ) where import System.IO