module Distribution.Simple.UUAGC.AbsSyn where import Distribution.Simple.UUAGC.Options import System.FilePath(normalise) data AGFileOption = AGFileOption String UUAGCOptions deriving Show type AGFileOptions = [AGFileOption] data UUAGCOption = UModuleDefault | UModule String | UData | UStrictData | UStrictWData | UCatas | USemFuns | USignatures | UNewTypes | UPretty | UWrappers | URename | UModCopy | UNest | USyntaxMacro | UOutput FilePath | UVerbose | UHelp -- ? | UAll | USearchPath FilePath | UPrefix String | USelf | UCycle | UVersion -- ? | UVisit | USeq | UUnbox -- UUnbox | UBangPats | UCase | UStrictCase | UStricterCase | ULocalCPS | USplitSems | UWErrors | UWIgnore | UWMax Int | UDumpGrammar | UDumpCGrammar | UGenTraces | UGenUseTraces | UGenCostCentres | UGenLinePragmas | USepSemMods | UGenFileDeps | UGenVisage | UGenAttrList | UForceIrrefutable FilePath | ULCKeyWords | UOptimize | UDoubleColons | UHaskellSyntax deriving (Eq,Read,Show) type UUAGCOptions = [UUAGCOption] defaultUUAGCOptions :: UUAGCOptions defaultUUAGCOptions = [UData ,UCatas ,USemFuns ,USignatures ,UPretty ,UWrappers ,URename ,UModuleDefault ] optionTxt = "--" equalTxt = "=" toLOp s = optionTxt ++ s toLEOpA s a = (toLOp s) ++ equalTxt ++ a fromUUAGCOtoArgs :: UUAGCOption -> String fromUUAGCOtoArgs (UModule s) = toLEOpA omodule s fromUUAGCOtoArgs UData = toLOp odata fromUUAGCOtoArgs UStrictData = toLOp ostrictdata fromUUAGCOtoArgs UStrictWData = toLOp ostrictwrap fromUUAGCOtoArgs UCatas = toLOp ocatas fromUUAGCOtoArgs USemFuns = toLOp osemfuns fromUUAGCOtoArgs USignatures = toLOp osignatures fromUUAGCOtoArgs UNewTypes = toLOp onewtypes fromUUAGCOtoArgs UPretty = toLOp opretty fromUUAGCOtoArgs UWrappers = toLOp owrappers fromUUAGCOtoArgs URename = toLOp orename fromUUAGCOtoArgs UModCopy = toLOp omodcopy fromUUAGCOtoArgs UNest = toLOp onest fromUUAGCOtoArgs USyntaxMacro = toLOp osyntaxmacro fromUUAGCOtoArgs (UOutput fp) = toLEOpA ooutput fp fromUUAGCOtoArgs UVerbose = toLOp overbose fromUUAGCOtoArgs (USearchPath fp) = toLEOpA "" fp fromUUAGCOtoArgs (UPrefix p) = toLEOpA oprefix p fromUUAGCOtoArgs USelf = toLOp oself fromUUAGCOtoArgs UCycle = toLOp ocycle fromUUAGCOtoArgs UVersion = toLOp oversion fromUUAGCOtoArgs UVisit = toLOp ovisit fromUUAGCOtoArgs USeq = toLOp oseq fromUUAGCOtoArgs UUnbox = toLOp ounbox fromUUAGCOtoArgs UBangPats = toLOp obangpats fromUUAGCOtoArgs UCase = toLOp ocase fromUUAGCOtoArgs UStrictCase = toLOp ostrictcase fromUUAGCOtoArgs UStricterCase = toLOp ostrictercase fromUUAGCOtoArgs ULocalCPS = toLOp olocalcps fromUUAGCOtoArgs USplitSems = toLOp osplitsems fromUUAGCOtoArgs UWErrors = toLOp owerrors fromUUAGCOtoArgs UWIgnore = toLOp owignore fromUUAGCOtoArgs (UWMax i) = toLEOpA owmax (show i) fromUUAGCOtoArgs UDumpGrammar = toLOp odumpgrammar fromUUAGCOtoArgs UDumpCGrammar = toLOp odumpcgrammar fromUUAGCOtoArgs UGenTraces = toLOp ogentraces fromUUAGCOtoArgs UGenUseTraces = toLOp ogenusetraces fromUUAGCOtoArgs UGenCostCentres = toLOp ogencostcentres fromUUAGCOtoArgs UGenLinePragmas = toLOp ogenlinepragmas fromUUAGCOtoArgs USepSemMods = toLOp osepsemmods fromUUAGCOtoArgs UGenFileDeps = toLOp ogenfiledeps fromUUAGCOtoArgs UGenVisage = toLOp ogenvisage fromUUAGCOtoArgs UGenAttrList = toLOp ogenattrlist fromUUAGCOtoArgs (UForceIrrefutable fp) = toLEOpA oforceirrefutable fp fromUUAGCOtoArgs UOptimize = toLOp ooptimize fromUUAGCOtoArgs UModuleDefault = toLOp omodule fromUUAGCOtoArgs UHaskellSyntax = toLOp ohaskellsyntax fromUUAGCOtoArgs UDoubleColons = toLOp odoublecolons fromUUAGCOtoArgs ULCKeyWords = toLOp olckeywords fromUUAGCOstoArgs :: UUAGCOptions -> [String] fromUUAGCOstoArgs = map fromUUAGCOtoArgs lookupFileOptions :: FilePath -> AGFileOptions -> UUAGCOptions lookupFileOptions s = foldl f defaultUUAGCOptions where f e (AGFileOption s' opt) | s == (normalise s') = opt | otherwise = e