-- | 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") ]