-- | Interpreter (module) contexts for hsc3. module Sound.Sc3.Common.Context where import Text.Printf {- base -} -- | (moduleName, qualifierName, packageName) type Context = [(String, Maybe String, String)] -- | Format a Context as a sequence of import commands. context_format :: Context -> [String] context_format = let f (moduleName,qualifier,packageName) = case qualifier of Nothing -> printf "import %s {- %s -}" moduleName packageName Just qualifierName -> printf "import qualified %s as %s {- %s -}" moduleName qualifierName packageName in map f -- | writeFile of context_format context_write :: FilePath -> Context -> IO () context_write fn = writeFile fn . unlines . context_format -- | Minimal hsc3 context min_context :: Context min_context = [("Prelude",Nothing,"base") ,("Control.Monad",Nothing,"base") ,("Data.Bits",Nothing,"base") ,("Data.Function",Nothing,"base") ,("Data.List",Nothing,"base") ,("Sound.Sc3",Nothing,"hsc3")] -- | Standard hsc3 context std_context :: Context std_context = [("Prelude",Nothing,"base") ,("Control.Monad",Nothing,"base") ,("Data.Bits",Nothing,"base") ,("Data.Function",Nothing,"base") ,("Data.List",Nothing,"base") ,("System.Random",Nothing,"random") ,("Sound.Osc",Nothing,"hosc") ,("Sound.Sc3",Nothing,"hsc3") ,("Sound.Sc3.Common.Base",Just "Sound.Sc3.Common.Base","hsc3") ,("Sound.Sc3.Common.Buffer.Gen",Just "Gen","hsc3") ,("Sound.Sc3.Common.Math.Filter.Beq",Just "Sound.Sc3.Common.Math.Filter.Beq","hsc3") ,("Sound.Sc3.Ugen.Bindings.Db.External",Just "X","hsc3") ,("Sound.Sc3.Ugen.Bindings.Composite.External",Just "X","hsc3") ,("Sound.Sc3.Ugen.Bindings.Hw.External.F0",Just "X","hsc3") ,("Sound.Sc3.Ugen.Bindings.Hw.External.SC3_Plugins",Just "X","hsc3") ,("Sound.Sc3.Ugen.Bindings.Hw.External.Zita",Just "X","hsc3") ,("Sound.Sc3.Ugen.Bindings.Db.Rdu",Just "X","sc3-rdu") ,("Sound.Sc3.Ugen.Dot",Just "Sound.Sc3.Ugen.Dot","hsc3-dot") ,("Sound.Sc3.Ugen.Unsafe",Nothing,"hsc3-unsafe") ,("Sound.Sc3.Ugen.Unsafe",Nothing,"hsc3-unsafe") ,("Sound.Sc3.Ugen.Protect",Just "Protect","hsc3-rw") ,("Sound.Sc3.Ui.Html",Just "Ui","hsc3-ui") ,("Sound.Sc3.Ui.Plot",Just "Ui","hsc3-ui") ,("Sound.Sc3.Ui.Qarma",Just "Ui","hsc3-ui") ,("Sound.Sc3.Ui.ScLang",Just "Ui","hsc3-ui") ,("Sound.Sc3.Ui.ScLang.Control",Just "Ui","hsc3-ui")]