module Language.Drasil.Code.Imperative.GOOL.LanguageRenderer.JuliaRenderer (
JuliaProject(..)
) where
import Prelude hiding (break,print,(<>),sin,cos,tan,floor)
import Text.PrettyPrint.HughesPJ (empty)
import Drasil.GProc (jlName, jlVersion)
import Language.Drasil.Code.Imperative.GOOL.ClassInterface (AuxiliarySym(..), auxFromData)
import Language.Drasil.Code.Imperative.README (ReadMeInfo(..))
import qualified
Language.Drasil.Code.Imperative.GOOL.LanguageRenderer.LanguagePolymorphic as
G (readMe, makefile, noRunIfLib, docIfEnabled)
import Language.Drasil.Code.Imperative.Build.AST (Runnable, DocConfig(..), interpMM)
newtype JuliaProject a = JLP {forall a. JuliaProject a -> a
unJLP :: a}
instance Functor JuliaProject where
fmap :: forall a b. (a -> b) -> JuliaProject a -> JuliaProject b
fmap a -> b
f (JLP a
x) = b -> JuliaProject b
forall a. a -> JuliaProject a
JLP (a -> b
f a
x)
instance Applicative JuliaProject where
pure :: forall a. a -> JuliaProject a
pure = a -> JuliaProject a
forall a. a -> JuliaProject a
JLP
(JLP a -> b
f) <*> :: forall a b.
JuliaProject (a -> b) -> JuliaProject a -> JuliaProject b
<*> (JLP a
x) = b -> JuliaProject b
forall a. a -> JuliaProject a
JLP (a -> b
f a
x)
instance Monad JuliaProject where
JLP a
x >>= :: forall a b.
JuliaProject a -> (a -> JuliaProject b) -> JuliaProject b
>>= a -> JuliaProject b
f = a -> JuliaProject b
f a
x
instance AuxiliarySym JuliaProject where
doxConfig :: String
-> SoftwareDossierState
-> Verbosity
-> JuliaProject FileAndContents
doxConfig String
_ SoftwareDossierState
_ Verbosity
_ = String -> Doc -> JuliaProject FileAndContents
forall (r :: * -> *).
Applicative r =>
String -> Doc -> r FileAndContents
auxFromData String
"" Doc
empty
readMe :: ReadMeInfo -> JuliaProject FileAndContents
readMe ReadMeInfo
rmi = ReadMeInfo -> JuliaProject FileAndContents
forall (r :: * -> *).
Applicative r =>
ReadMeInfo -> r FileAndContents
G.readMe ReadMeInfo
rmi {
langName = jlName,
langVersion = jlVersion}
optimizeDox :: JuliaProject Doc
optimizeDox = String -> JuliaProject Doc
forall a. HasCallStack => String -> a
error String
doxError
makefile :: [String]
-> ImplementationType
-> [Comments]
-> SoftwareDossierState
-> ProgData
-> JuliaProject FileAndContents
makefile [String]
_ ImplementationType
it [Comments]
cms = Maybe BuildConfig
-> Maybe Runnable
-> Maybe DocConfig
-> SoftwareDossierState
-> ProgData
-> JuliaProject FileAndContents
forall (r :: * -> *).
Applicative r =>
Maybe BuildConfig
-> Maybe Runnable
-> Maybe DocConfig
-> SoftwareDossierState
-> ProgData
-> r FileAndContents
G.makefile Maybe BuildConfig
forall a. Maybe a
Nothing (ImplementationType -> Maybe Runnable -> Maybe Runnable
G.noRunIfLib ImplementationType
it Maybe Runnable
jlRunnable)
([Comments] -> DocConfig -> Maybe DocConfig
G.docIfEnabled [Comments]
cms (Dependencies -> [Command] -> DocConfig
DocConfig [] []))
auxHelperDoc :: JuliaProject Doc -> Doc
auxHelperDoc = JuliaProject Doc -> Doc
forall a. JuliaProject a -> a
unJLP
jlRunnable :: Maybe Runnable
jlRunnable :: Maybe Runnable
jlRunnable = String -> Maybe Runnable
interpMM String
"julia"
doxError :: String
doxError :: String
doxError = String
jlName String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" is not compatible with Doxygen."