]>
Commit | Line | Data |
---|---|---|
46039343 | 1 | module PursLoader.Plugin |
2 | ( Result() | |
3 | , Compile() | |
4 | , Context() | |
5 | , ImmutableMap() | |
6 | , DependencyGraph() | |
7 | , get | |
8 | , dependenciesOf | |
9 | ) where | |
10 | ||
11 | import Prelude (Unit()) | |
12 | ||
13 | import Control.Monad.Eff (Eff()) | |
14 | import Control.Monad.Eff.Exception (Error()) | |
15 | ||
16 | import Data.Either (Either(..)) | |
17 | import Data.Function (Fn4(), runFn4) | |
18 | import Data.Maybe (Maybe(..)) | |
19 | import Data.Nullable (Nullable()) | |
20 | ||
21 | type Result = { srcMap :: ImmutableMap String String, ffiMap :: ImmutableMap String String, graph :: DependencyGraph } | |
22 | ||
23 | type Compile eff = Nullable Error -> Result -> Eff eff Unit | |
24 | ||
25 | type Context eff = { compile :: Compile eff -> Eff eff Unit } | |
26 | ||
27 | get :: forall key value. ImmutableMap key value -> key -> Maybe value | |
28 | get = runFn4 getFn Nothing Just | |
29 | ||
30 | dependenciesOf :: DependencyGraph -> String -> Either Error (Array String) | |
31 | dependenciesOf = runFn4 dependenciesOfFn Left Right | |
32 | ||
33 | foreign import data ImmutableMap :: * -> * -> * | |
34 | ||
35 | foreign import data DependencyGraph :: * | |
36 | ||
37 | foreign import getFn | |
38 | :: forall key value. Fn4 (Maybe value) | |
39 | (value -> Maybe value) | |
40 | (ImmutableMap key value) | |
41 | key | |
42 | (Maybe value) | |
43 | ||
44 | foreign import dependenciesOfFn | |
45 | :: Fn4 (Error -> Either Error (Array String)) | |
46 | (Array String -> Either Error (Array String)) | |
47 | DependencyGraph | |
48 | String | |
49 | (Either Error (Array String)) |