@@ -14,26 +14,30 @@
15{-# LANGUAGE FlexibleContexts #-}
15{-# LANGUAGE FlexibleContexts #-}
17−module Foreign (parseForeignModulesFromFiles) where
17+module Language.PureScript.Parser.JS (parseForeignModulesFromFiles) where
19import Control.Applicative ((*>), (<*))
19import Control.Applicative ((*>), (<*))
20import Control.Monad (msum)
20import Control.Monad (msum)
21import Control.Monad.Error.Class (MonadError(..))
21import Control.Monad.Error.Class (MonadError(..))
22+import Language.PureScript.Errors
23+import Language.PureScript.Names
24+import Language.PureScript.Parser.Common
25+import Language.PureScript.Parser.Lexer
26+import Prelude hiding (lex)
22import qualified Data.Map as M
27import qualified Data.Map as M
23−import qualified Language.PureScript as P
24import qualified Text.Parsec as PS
28import qualified Text.Parsec as PS
26−parseForeignModulesFromFiles :: (MonadError P.MultipleErrors m, Functor m) => [(FilePath, String)] -> m (M.Map P.ModuleName String)
30+parseForeignModulesFromFiles :: (MonadError MultipleErrors m, Functor m) => [(FilePath, String)] -> m (M.Map ModuleName String)
27parseForeignModulesFromFiles files = do
31parseForeignModulesFromFiles files = do
28− foreigns <- P.parU files $ \(path, file) ->
32+ foreigns <- parU files $ \(path, file) ->
29 case findModuleName (lines file) of
33 case findModuleName (lines file) of
30 Just name -> return (name, file)
34 Just name -> return (name, file)
31− Nothing -> throwError (P.errorMessage $ P.ErrorParsingFFIModule path)
35+ Nothing -> throwError (errorMessage $ ErrorParsingFFIModule path)
32 return $ M.fromList foreigns
36 return $ M.fromList foreigns
34−findModuleName :: [String] -> Maybe P.ModuleName
38+findModuleName :: [String] -> Maybe ModuleName
35findModuleName = msum . map parseComment
39findModuleName = msum . map parseComment
37− parseComment :: String -> Maybe P.ModuleName
41+ parseComment :: String -> Maybe ModuleName
38 parseComment s = either (const Nothing) Just $
42 parseComment s = either (const Nothing) Just $
39− P.lex "" s >>= P.runTokenParser "" (P.symbol' "//" *> P.reserved "module" *> P.moduleName <* PS.eof)
43+ lex "" s >>= runTokenParser "" (symbol' "//" *> reserved "module" *> moduleName <* PS.eof)