@@ -14,26 +14,30 @@
1414
1515{-# LANGUAGE FlexibleContexts #-}
1616
17−module Foreign (parseForeignModulesFromFiles) where
17+module Language.PureScript.Parser.JS (parseForeignModulesFromFiles) where
1818
1919import Control.Applicative ((*>), (<*))
2020import Control.Monad (msum)
2121import 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)
2227import qualified Data.Map as M
23−import qualified Language.PureScript as P
2428import qualified Text.Parsec as PS
2529
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)
2731parseForeignModulesFromFiles files = do
28− foreigns <- P.parU files $ \(path, file) ->
32+ foreigns <- parU files $ \(path, file) ->
2933 case findModuleName (lines file) of
3034 Just name -> return (name, file)
31− Nothing -> throwError (P.errorMessage $ P.ErrorParsingFFIModule path)
35+ Nothing -> throwError (errorMessage $ ErrorParsingFFIModule path)
3236 return $ M.fromList foreigns
3337
34−findModuleName :: [String] -> Maybe P.ModuleName
38+findModuleName :: [String] -> Maybe ModuleName
3539findModuleName = msum . map parseComment
3640 where
37− parseComment :: String -> Maybe P.ModuleName
41+ parseComment :: String -> Maybe ModuleName
3842 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)