module Elm.Internal.Utils (compile, moduleName) where
import qualified Data.List as List
import qualified Generate.JavaScript as JS
import qualified Build.Source as Source
import qualified Parse.Module as Parser
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 = Parser.getModuleName