module Language.Elm (compile, moduleName, runtime, docs) where
import qualified Data.List as List
import qualified Data.Map as Map
import Data.Version (showVersion)
import Generate.JavaScript (jsModule)
import Initialize (buildFromSource)
import Parse.Module (getModuleName)
import SourceSyntax.Module
import Text.Blaze.Html (Html)
import qualified Text.PrettyPrint as P
import qualified Metadata.Prelude as Prelude
import Paths_Elm
compile :: String -> Either String String
compile source =
case buildFromSource False Prelude.interfaces source of
Left docs -> Left . unlines . List.intersperse "" $ map P.render docs
Right modul -> Right $ jsModule (modul :: MetadataModule () ())
moduleName :: String -> Maybe String
moduleName = getModuleName
runtime :: IO FilePath
runtime = getDataFileName "elm-runtime.js"
docs :: IO FilePath
docs = getDataFileName "docs.json"