diff options
Diffstat (limited to 'src-3.0/GF/Command/Importing.hs')
| -rw-r--r-- | src-3.0/GF/Command/Importing.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src-3.0/GF/Command/Importing.hs b/src-3.0/GF/Command/Importing.hs new file mode 100644 index 000000000..a09ba8de6 --- /dev/null +++ b/src-3.0/GF/Command/Importing.hs @@ -0,0 +1,28 @@ +module GF.Command.Importing (importGrammar) where + +import GF.Compile.API +import GF.GFCC.DataGFCC +import GF.GFCC.API + +import GF.Devel.UseIO +import GF.Infra.Option +import GF.Data.ErrM + +import Data.List (nubBy) +import System.FilePath + +-- import a grammar in an environment where it extends an existing grammar +importGrammar :: MultiGrammar -> Options -> [FilePath] -> IO MultiGrammar +importGrammar mgr0 opts files = + case takeExtensions (last files) of + s | elem s [".gf",".gfo"] -> do + res <- appIOE $ compileToGFCC opts files + case res of + Ok gfcc2 -> do let gfcc3 = unionGFCC (gfcc mgr0) gfcc2 + return $ MultiGrammar gfcc3 + Bad msg -> do putStrLn msg + return mgr0 + ".gfcc" -> do + gfcc2 <- mapM file2gfcc files >>= return . foldl1 unionGFCC + let gfcc3 = unionGFCC (gfcc mgr0) gfcc2 + return $ MultiGrammar gfcc3
\ No newline at end of file |
