WriteLibDefn.hs revision 4c8d3c5a9e938633f6147b5a595b9b93bfca99e6
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsModule : $Header$
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsDescription : Writing out a HetCASL library
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsCopyright : (c) Klaus L�ttich, C.Maeder, Uni Bremen 2002-2006
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsMaintainer : Christian.Maeder@dfki.de
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsStability : provisional
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsPortability : non-portable(DevGraph)
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark AndrewsWriting out HetCASL env files as much as is needed for
bf8267aa453e5d2a735ed732a043b77a0b355b20Mark Andrewsthe static analysis
c1ced49662181d2fb2343ed7bde71d170f0d1119Mark Andrewsimport Common.GlobalAnnotations (GlobalAnnos)
c1ced49662181d2fb2343ed7bde71d170f0d1119Mark Andrewsimport Common.SimpPretty (writeFileSDoc)
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Huntimport Syntax.AS_Library (LIB_DEFN())
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Hunt-- | compute the prefix for files to be written out
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan HuntgetFilePrefix :: HetcatsOpts -> FilePath -> (FilePath, FilePath)
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan HuntgetFilePrefix opts file =
4bf686cf5d6b83981abdf2d8157c829922acc6d4Evan Hunt let odir' = outdir opts
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt (base, path, _) = fileparse (envSuffix : downloadExtensions) file
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt odir = if null odir' then path else odir'
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt in (odir, pathAndBase odir base)
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt Write the given LIB_DEFN in every format that HetcatsOpts includes.
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt Filenames are determined by the output formats.
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Huntwrite_LIB_DEFN :: GlobalAnnos -> FilePath -> HetcatsOpts -> LIB_DEFN -> IO ()
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Huntwrite_LIB_DEFN ga file opts ld = do
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt let (odir, filePrefix) = getFilePrefix opts file
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt filename ty = filePrefix ++ "." ++ show ty
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews verbMesg ty = putIfVerbose opts 2 $ "Writing file: " ++ filename ty
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews printAscii ty = do
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews write_casl_asc opts ga (filename ty) ld
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews write_type :: OutType -> IO ()
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews write_type t = case t of
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews PrettyOut PrettyAscii -> printAscii t
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews PrettyOut PrettyLatex -> do
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews write_casl_latex opts ga (filename t) ld
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews _ -> return () -- implemented elsewhere
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews putIfVerbose opts 3 ("Current OutDir: " ++ odir)
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrews mapM_ write_type $ outtypes opts
26bb3b7a67b833f0a18072567de036226890ca1aMark Andrewswrite_casl_asc :: HetcatsOpts -> GlobalAnnos -> FilePath -> LIB_DEFN -> IO ()
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Huntwrite_casl_asc _ ga oup ld = writeFile oup $
578e3196076b409c509c6c0a0873e7bfe54f4d61Evan Hunt shows (useGlobalAnnos ga $ pretty ld) "\n"
c1ced49662181d2fb2343ed7bde71d170f0d1119Mark Andrewsdebug_latex_filename :: FilePath -> FilePath