module Elm.Internal.Utils (compile, moduleName, nameAndImports) where
import qualified Data.List as List
import qualified Generate.JavaScript as JS
import qualified Build.Source as Source
import Parse.Module (getModuleName)
import Parse.Parse (dependencies)
import qualified SourceSyntax.Module as M
import qualified Text.PrettyPrint as P
import qualified Metadata.Prelude as Prelude
import System.IO.Unsafe
compile :: String -> Either String String
compile source =
case Source.build False interfaces source of
Left docs -> Left . unlines . List.intersperse "" $ map P.render docs
Right modul -> Right $ JS.generate modul
interfaces :: M.Interfaces
interfaces = unsafePerformIO $ Prelude.interfaces False
moduleName :: String -> Maybe String
moduleName = getModuleName
nameAndImports :: String -> Maybe (String, [String])
nameAndImports src =
either (const Nothing) Just (dependencies src)