Skip to content

Commit d928713

Browse files
committed
Move FFI JS parsing for psc/psc-make sharing
1 parent 7b5ab61 commit d928713

File tree

4 files changed

+16
-12
lines changed

4 files changed

+16
-12
lines changed

psc/Main.hs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@ import qualified Language.PureScript.Constants as C
4545
import qualified Language.PureScript.CoreFn as CF
4646
import qualified Paths_purescript as Paths
4747

48-
import Foreign
49-
5048
data PSCOptions = PSCOptions
5149
{ pscInput :: [FilePath]
5250
, pscForeignInput :: [FilePath]
@@ -104,7 +102,7 @@ parseInputs :: (Functor m, Applicative m, MonadError P.MultipleErrors m, MonadWr
104102
=> [(Maybe FilePath, String)] -> [(FilePath, String)] -> m ([(Maybe FilePath, P.Module)], M.Map P.ModuleName String)
105103
parseInputs modules foreigns =
106104
(,) <$> P.parseModulesFromFiles (fromMaybe "") modules
107-
<*> parseForeignModulesFromFiles foreigns
105+
<*> P.parseForeignModulesFromFiles foreigns
108106

109107
compileJS :: forall m. (Functor m, Applicative m, MonadError P.MultipleErrors m, MonadWriter P.MultipleErrors m, MonadReader (P.Options P.Compile) m)
110108
=> [P.Module] -> M.Map P.ModuleName String -> [String] -> m (String, String)

purescript.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ library
8888
Language.PureScript.Parser.Lexer
8989
Language.PureScript.Parser.Common
9090
Language.PureScript.Parser.Declarations
91+
Language.PureScript.Parser.JS
9192
Language.PureScript.Parser.Kinds
9293
Language.PureScript.Parser.State
9394
Language.PureScript.Parser.Types
@@ -148,7 +149,7 @@ executable psc
148149
main-is: Main.hs
149150
buildable: True
150151
hs-source-dirs: psc
151-
other-modules: Foreign
152+
other-modules:
152153
ghc-options: -Wall -O2 -fno-warn-unused-do-bind
153154

154155
executable psc-make

src/Language/PureScript/Parser.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,4 @@ import Language.PureScript.Parser.State as P
3333
import Language.PureScript.Parser.Kinds as P
3434
import Language.PureScript.Parser.Lexer as P
3535
import Language.PureScript.Parser.Declarations as P
36+
import Language.PureScript.Parser.JS as P
Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,30 @@
1414

1515
{-# LANGUAGE FlexibleContexts #-}
1616

17-
module Foreign (parseForeignModulesFromFiles) where
17+
module Language.PureScript.Parser.JS (parseForeignModulesFromFiles) where
1818

1919
import Control.Applicative ((*>), (<*))
2020
import Control.Monad (msum)
2121
import 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)
2227
import qualified Data.Map as M
23-
import qualified Language.PureScript as P
2428
import 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)
2731
parseForeignModulesFromFiles 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
3539
findModuleName = 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)

0 commit comments

Comments
 (0)