]> git.immae.eu Git - github/fretlink/purs-loader.git/commitdiff
PureScript 0.7 updates and migration to pulp
authoreric thul <thul.eric@gmail.com>
Wed, 12 Aug 2015 00:57:07 +0000 (20:57 -0400)
committereric thul <thul.eric@gmail.com>
Wed, 12 Aug 2015 00:57:07 +0000 (20:57 -0400)
23 files changed:
MODULE.md [deleted file]
bower.json
docs/PursLoader/ChildProcess.md [new file with mode: 0644]
docs/PursLoader/FS.md [new file with mode: 0644]
docs/PursLoader/Glob.md [new file with mode: 0644]
docs/PursLoader/Loader.md [new file with mode: 0644]
docs/PursLoader/LoaderRef.md [new file with mode: 0644]
docs/PursLoader/LoaderUtil.md [new file with mode: 0644]
docs/PursLoader/Options.md [new file with mode: 0644]
package.json
src/PursLoader/ChildProcess.js [new file with mode: 0644]
src/PursLoader/ChildProcess.purs
src/PursLoader/FS.js [new file with mode: 0644]
src/PursLoader/FS.purs
src/PursLoader/Glob.js [new file with mode: 0644]
src/PursLoader/Glob.purs
src/PursLoader/Loader.js [new file with mode: 0644]
src/PursLoader/Loader.purs
src/PursLoader/LoaderRef.js [new file with mode: 0644]
src/PursLoader/LoaderRef.purs
src/PursLoader/LoaderUtil.js [new file with mode: 0644]
src/PursLoader/LoaderUtil.purs
src/PursLoader/Options.purs

diff --git a/MODULE.md b/MODULE.md
deleted file mode 100644 (file)
index 45f6cca..0000000
--- a/MODULE.md
+++ /dev/null
@@ -1,178 +0,0 @@
-# Module Documentation
-
-## Module PursLoader.ChildProcess
-
-#### `ChildProcess`
-
-``` purescript
-data ChildProcess :: !
-```
-
-
-#### `spawn`
-
-``` purescript
-spawn :: forall eff. String -> [String] -> Aff (cp :: ChildProcess | eff) String
-```
-
-
-
-## Module PursLoader.FS
-
-#### `FS`
-
-``` purescript
-data FS :: !
-```
-
-
-#### `writeFileUtf8`
-
-``` purescript
-writeFileUtf8 :: forall eff. String -> String -> Aff (fs :: FS | eff) Unit
-```
-
-
-
-## Module PursLoader.Glob
-
-#### `Glob`
-
-``` purescript
-data Glob :: !
-```
-
-
-#### `globAll`
-
-``` purescript
-globAll :: forall eff. [String] -> Aff (glob :: Glob | eff) [[String]]
-```
-
-
-
-## Module PursLoader.Loader
-
-#### `Effects`
-
-``` purescript
-type Effects eff = (loader :: Loader, glob :: Glob, fs :: FS, cp :: ChildProcess | eff)
-```
-
-
-#### `loader`
-
-``` purescript
-loader :: forall eff. LoaderRef -> String -> Eff (Effects eff) Unit
-```
-
-
-#### `loaderFn`
-
-``` purescript
-loaderFn :: forall eff. Fn2 LoaderRef String (Eff (Effects eff) Unit)
-```
-
-
-
-## Module PursLoader.LoaderRef
-
-#### `LoaderRef`
-
-``` purescript
-data LoaderRef
-```
-
-
-#### `Loader`
-
-``` purescript
-data Loader :: !
-```
-
-
-#### `async`
-
-``` purescript
-async :: forall eff a. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit)
-```
-
-
-#### `cacheable`
-
-``` purescript
-cacheable :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
-```
-
-
-#### `query`
-
-``` purescript
-query :: LoaderRef -> String
-```
-
-
-
-## Module PursLoader.LoaderUtil
-
-#### `parseQuery`
-
-``` purescript
-parseQuery :: String -> Foreign
-```
-
-
-
-## Module PursLoader.Options
-
-#### `isForeignOptions`
-
-``` purescript
-instance isForeignOptions :: IsForeign Options
-```
-
-
-#### `booleanLoaderOption`
-
-``` purescript
-instance booleanLoaderOption :: LoaderOption Boolean
-```
-
-
-#### `stringLoaderOption`
-
-``` purescript
-instance stringLoaderOption :: LoaderOption String
-```
-
-
-#### `arrayLoaderOption`
-
-``` purescript
-instance arrayLoaderOption :: (LoaderOption a) => LoaderOption [a]
-```
-
-
-#### `pscOptions`
-
-``` purescript
-pscOptions :: Foreign -> [String]
-```
-
-
-#### `loaderSrcOption`
-
-``` purescript
-loaderSrcOption :: Foreign -> Maybe [String]
-```
-
-
-#### `loaderFFIOption`
-
-``` purescript
-loaderFFIOption :: Foreign -> Maybe [String]
-```
-
-
-
-
index 2ee248681cae4c9d0dc205534f3c147cf690d125..0e676f475459792e1e480c3ff5563bf492f174c7 100644 (file)
@@ -2,16 +2,8 @@
   "name": "purs-loader",
   "private": true,
   "devDependencies": {
-    "purescript-aff": "~0.9.1",
-    "purescript-exceptions": "~0.2.3",
-    "purescript-strings": "~0.4.5",
-    "purescript-maybe": "~0.2.2",
-    "purescript-foreign": "~0.4.2",
-    "purescript-foldable-traversable": "~0.3.1",
-    "purescript-tuples": "~0.3.4",
-    "purescript-maps": "~0.3.3",
-    "purescript-arrays": "~0.3.7",
-    "purescript-monad-eff": "~0.1.0",
-    "purescript-sets": "0.3.2"
+    "purescript-aff": "~0.11.3",
+    "purescript-strings": "~0.6.0",
+    "purescript-foreign": "~0.6.0"
   }
 }
diff --git a/docs/PursLoader/ChildProcess.md b/docs/PursLoader/ChildProcess.md
new file mode 100644 (file)
index 0000000..7c2e414
--- /dev/null
@@ -0,0 +1,15 @@
+## Module PursLoader.ChildProcess
+
+#### `ChildProcess`
+
+``` purescript
+data ChildProcess :: !
+```
+
+#### `spawn`
+
+``` purescript
+spawn :: forall eff. String -> Array String -> Aff (cp :: ChildProcess | eff) String
+```
+
+
diff --git a/docs/PursLoader/FS.md b/docs/PursLoader/FS.md
new file mode 100644 (file)
index 0000000..811fcbd
--- /dev/null
@@ -0,0 +1,21 @@
+## Module PursLoader.FS
+
+#### `FS`
+
+``` purescript
+data FS :: !
+```
+
+#### `writeFileUtf8`
+
+``` purescript
+writeFileUtf8 :: forall eff. String -> String -> Aff (fs :: FS | eff) Unit
+```
+
+#### `findFileUtf8`
+
+``` purescript
+findFileUtf8 :: forall eff. Regex -> Array String -> Aff (fs :: FS | eff) (Maybe String)
+```
+
+
diff --git a/docs/PursLoader/Glob.md b/docs/PursLoader/Glob.md
new file mode 100644 (file)
index 0000000..f7abe78
--- /dev/null
@@ -0,0 +1,15 @@
+## Module PursLoader.Glob
+
+#### `Glob`
+
+``` purescript
+data Glob :: !
+```
+
+#### `globAll`
+
+``` purescript
+globAll :: forall eff. Array String -> Aff (glob :: Glob | eff) (Array (Array String))
+```
+
+
diff --git a/docs/PursLoader/Loader.md b/docs/PursLoader/Loader.md
new file mode 100644 (file)
index 0000000..8e91c4a
--- /dev/null
@@ -0,0 +1,21 @@
+## Module PursLoader.Loader
+
+#### `Effects`
+
+``` purescript
+type Effects eff = (cp :: ChildProcess, fs :: FS, glob :: Glob, loader :: Loader | eff)
+```
+
+#### `loader`
+
+``` purescript
+loader :: forall eff. LoaderRef -> String -> Eff (Effects eff) Unit
+```
+
+#### `loaderFn`
+
+``` purescript
+loaderFn :: forall eff. Fn2 LoaderRef String (Eff (Effects eff) Unit)
+```
+
+
diff --git a/docs/PursLoader/LoaderRef.md b/docs/PursLoader/LoaderRef.md
new file mode 100644 (file)
index 0000000..36c1550
--- /dev/null
@@ -0,0 +1,51 @@
+## Module PursLoader.LoaderRef
+
+#### `LoaderRef`
+
+``` purescript
+data LoaderRef
+```
+
+#### `Loader`
+
+``` purescript
+data Loader :: !
+```
+
+#### `async`
+
+``` purescript
+async :: forall eff a. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit)
+```
+
+#### `cacheable`
+
+``` purescript
+cacheable :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
+```
+
+#### `query`
+
+``` purescript
+query :: LoaderRef -> String
+```
+
+#### `clearDependencies`
+
+``` purescript
+clearDependencies :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
+```
+
+#### `resourcePath`
+
+``` purescript
+resourcePath :: LoaderRef -> String
+```
+
+#### `addDependency`
+
+``` purescript
+addDependency :: forall eff. LoaderRef -> String -> Eff (loader :: Loader | eff) Unit
+```
+
+
diff --git a/docs/PursLoader/LoaderUtil.md b/docs/PursLoader/LoaderUtil.md
new file mode 100644 (file)
index 0000000..36d6879
--- /dev/null
@@ -0,0 +1,9 @@
+## Module PursLoader.LoaderUtil
+
+#### `parseQuery`
+
+``` purescript
+parseQuery :: String -> Foreign
+```
+
+
diff --git a/docs/PursLoader/Options.md b/docs/PursLoader/Options.md
new file mode 100644 (file)
index 0000000..d04b721
--- /dev/null
@@ -0,0 +1,21 @@
+## Module PursLoader.Options
+
+#### `pscOptions`
+
+``` purescript
+pscOptions :: Foreign -> Array String
+```
+
+#### `loaderSrcOption`
+
+``` purescript
+loaderSrcOption :: Foreign -> Maybe (Array String)
+```
+
+#### `loaderFFIOption`
+
+``` purescript
+loaderFFIOption :: Foreign -> Maybe (Array String)
+```
+
+
index 0775c1b1c82514e98bfe2fc6a2516843426d97fd..7871a67f07c71a0a3e23331a5734eb61f72ec4fc 100644 (file)
@@ -9,10 +9,11 @@
     "email": "thul.eric@gmail.com"
   },
   "scripts": {
-    "build": "npm run-script build:compile && npm run-script build:package",
+    "build": "npm run-script build:compile && npm run-script build:docs && npm run-script build:package",
     "build:compile": "./node_modules/.bin/pulp build -o build",
-    "build:watch": "./node_modules/.bin/pulp -w build -o build",
+    "build:docs": "./node_modules/.bin/pulp docs",
     "build:package": "./node_modules/.bin/webpack --progress --colors --profile --bail",
+    "build:watch": "./node_modules/.bin/pulp -w build -o build",
     "build:json": "./node_modules/.bin/webpack --progress --colors --profile --bail --json > index.json",
     "prepublish": "npm run-script build"
   },
diff --git a/src/PursLoader/ChildProcess.js b/src/PursLoader/ChildProcess.js
new file mode 100644 (file)
index 0000000..d62aef6
--- /dev/null
@@ -0,0 +1,40 @@
+'use strict';
+
+// module PursLoader.ChildProcess
+
+var child_process = require('child_process');
+
+var chalk = require('chalk');
+
+function spawnFn(command, args, errback, callback) {
+  return function(){
+    var process = child_process.spawn(command, args);
+
+    var stdout = new Buffer(0);
+
+    var stderr = new Buffer(0);
+
+    process.stdout.on('data', function(data){
+      stdout = Buffer.concat([stdout, new Buffer(data)]);
+    });
+
+    process.stderr.on('data', function(data){
+      stderr = Buffer.concat([stderr, new Buffer(data)]);
+    });
+
+    process.on('close', function(code){
+      var output = stdout.toString('utf-8');
+
+      var error = stderr.toString('utf-8');
+
+      if (error.length > 0) {
+         console.error('\n' + chalk.red('*') + ' ' + error);
+      }
+
+      if (code !== 0) errback(new Error('Process terminated with code ' + code))();
+      else callback(output)();
+    });
+  };
+}
+
+exports.spawnFn = spawnFn;
index 34558fa74504b44f3343a64914bd718a5e0916bb..3bd960b784b12f6016f489ca020c91fd06a205ae 100644 (file)
@@ -3,6 +3,8 @@ module PursLoader.ChildProcess
   , spawn
   ) where
 
+import Prelude (Unit(), ($))
+
 import Control.Monad.Aff (Aff(), makeAff)
 import Control.Monad.Eff (Eff())
 import Control.Monad.Eff.Exception (Error())
@@ -11,46 +13,11 @@ import Data.Function
 
 foreign import data ChildProcess :: !
 
-spawn :: forall eff. String -> [String] -> Aff (cp :: ChildProcess | eff) String
+spawn :: forall eff. String -> Array String -> Aff (cp :: ChildProcess | eff) String
 spawn command args = makeAff $ runFn4 spawnFn command args
 
-foreign import spawnFn """
-function spawnFn(command, args, errback, callback) {
-  return function(){
-    var child_process = require('child_process');
-
-    var process = child_process.spawn(command, args);
-
-    var stdout = new Buffer(0);
-
-    var stderr = new Buffer(0);
-
-    process.stdout.on('data', function(data){
-      stdout = Buffer.concat([stdout, new Buffer(data)]);
-    });
-
-    process.stderr.on('data', function(data){
-      stderr = Buffer.concat([stderr, new Buffer(data)]);
-    });
-
-    process.on('close', function(code){
-      var chalk = require('chalk');
-
-      var output = stdout.toString('utf-8');
-
-      var error = stderr.toString('utf-8');
-
-      if (error.length > 0) {
-         console.error('\n' + chalk.red('*') + ' ' + error);
-      }
-
-      if (code !== 0) errback(new Error('Process terminated with code ' + code))();
-      else callback(output)();
-    });
-  };
-}
-""" :: forall eff. Fn4 String
-                       [String]
-                       (Error -> Eff (cp :: ChildProcess | eff) Unit)
-                       (String -> Eff (cp :: ChildProcess | eff) Unit)
-                       (Eff (cp :: ChildProcess | eff) Unit)
+foreign import spawnFn :: forall eff. Fn4 String
+                                          (Array String)
+                                          (Error -> Eff (cp :: ChildProcess | eff) Unit)
+                                          (String -> Eff (cp :: ChildProcess | eff) Unit)
+                                          (Eff (cp :: ChildProcess | eff) Unit)
diff --git a/src/PursLoader/FS.js b/src/PursLoader/FS.js
new file mode 100644 (file)
index 0000000..1a7f5b0
--- /dev/null
@@ -0,0 +1,36 @@
+'use strict';
+
+// module PursLoader.FS
+
+var fs = require('fs');
+
+var async = require('async');
+
+function writeFileUtf8Fn(filepath, contents, errback, callback) {
+  return function(){
+    fs.writeFile(filepath, contents, function(error){
+      if (error) errback(error)();
+      else callback()();
+    });
+  };
+}
+
+function findFileUtf8Fn(nothing, just, regex, filepaths, errback, callback) {
+  return function(){
+    function findFile(filepath, callback) {
+      fs.readFile(filepath, {encoding: 'utf-8'}, function(error, result){
+        if (error) callback(false);
+        else callback(regex.test(result));
+      });
+    }
+
+    async.detect(filepaths, findFile, function(result){
+      if (!result) callback(nothing)();
+      else callback(just(result))();
+    });
+  };
+}
+
+exports.writeFileUtf8Fn = writeFileUtf8Fn;
+
+exports.findFileUtf8Fn = findFileUtf8Fn;
index 6955a632abbbd5beb79680b42bd5eb159917b10c..969e3d022dbf67abfe6422fbf0fb1e1ac9909de5 100644 (file)
@@ -4,6 +4,8 @@ module PursLoader.FS
   , findFileUtf8
   ) where
 
+import Prelude (Unit(), ($))
+
 import Control.Monad.Aff (Aff(), makeAff)
 import Control.Monad.Eff (Eff())
 import Control.Monad.Eff.Exception (Error())
@@ -18,50 +20,19 @@ foreign import data FS :: !
 writeFileUtf8 :: forall eff. String -> String -> Aff (fs :: FS | eff) Unit
 writeFileUtf8 filepath contents = makeAff $ runFn4 writeFileUtf8Fn filepath contents
 
-foreign import writeFileUtf8Fn """
-function writeFileUtf8Fn(filepath, contents, errback, callback) {
-  return function(){
-    var fs = require('fs');
-
-    fs.writeFile(filepath, contents, function(error){
-      if (error) errback(error)();
-      else callback()();
-    });
-  };
-}
-""" :: forall eff. Fn4 String
-                       String
-                       (Error -> Eff (fs :: FS | eff) Unit)
-                       (Unit -> Eff (fs :: FS | eff) Unit)
-                       (Eff (fs :: FS | eff) Unit)
+foreign import writeFileUtf8Fn :: forall eff. Fn4 String
+                                                  String
+                                                  (Error -> Eff (fs :: FS | eff) Unit)
+                                                  (Unit -> Eff (fs :: FS | eff) Unit)
+                                                  (Eff (fs :: FS | eff) Unit)
 
-findFileUtf8 :: forall eff. Regex -> [String] -> Aff (fs :: FS | eff) (Maybe String)
+findFileUtf8 :: forall eff. Regex -> Array String -> Aff (fs :: FS | eff) (Maybe String)
 findFileUtf8 regexp filepaths = makeAff $ runFn6 findFileUtf8Fn Nothing Just regexp filepaths
 
-foreign import findFileUtf8Fn """
-function findFileUtf8Fn(nothing, just, regex, filepaths, errback, callback) {
-  return function(){
-    var fs = require('fs');
-
-    var async = require('async');
-
-    function findFile(filepath, callback) {
-      fs.readFile(filepath, {encoding: 'utf-8'}, function(error, result){
-        if (error) callback(false);
-        else callback(regex.test(result));
-      });
-    }
-
-    async.detect(filepaths, findFile, function(result){
-      if (!result) callback(nothing)();
-      else callback(just(result))();
-    });
-  };
-}
-""" :: forall eff. Fn6 (Maybe String)
-                       (String -> Maybe String)
-                       Regex
-                       [String]
-                       (Error -> Eff (fs :: FS | eff) Unit)
-                       (Maybe String -> Eff (fs :: FS | eff) Unit)
-                       (Eff (fs :: FS | eff) Unit)
+foreign import findFileUtf8Fn :: forall eff. Fn6 (Maybe String)
+                                                 (String -> Maybe String)
+                                                 Regex
+                                                 (Array String)
+                                                 (Error -> Eff (fs :: FS | eff) Unit)
+                                                 (Maybe String -> Eff (fs :: FS | eff) Unit)
+                                                 (Eff (fs :: FS | eff) Unit)
diff --git a/src/PursLoader/Glob.js b/src/PursLoader/Glob.js
new file mode 100644 (file)
index 0000000..960ae9a
--- /dev/null
@@ -0,0 +1,18 @@
+'use strict';
+
+// module PursLoader.Glob
+
+var glob = require('glob');
+
+var async = require('async');
+
+function globAllFn(patterns, errback, callback) {
+  return function(){
+    async.map(patterns, glob, function(error, result){
+      if (error) errback(new Error(error))();
+      else callback(result)();
+    });
+  };
+}
+
+exports.globAllFn = globAllFn;
index 392d9e4012e7e9877cf2feab2100bcd18fd3ca6f..45eeb56837ad2fc1173c40bce5d8705ba9617786 100644 (file)
@@ -3,6 +3,8 @@ module PursLoader.Glob
   , globAll
   ) where
 
+import Prelude (Unit(), ($))
+
 import Control.Monad.Aff (Aff(), makeAff)
 import Control.Monad.Eff (Eff())
 import Control.Monad.Eff.Exception (Error())
@@ -11,23 +13,10 @@ import Data.Function
 
 foreign import data Glob :: !
 
-globAll :: forall eff. [String] -> Aff (glob :: Glob | eff) [[String]]
+globAll :: forall eff. Array String -> Aff (glob :: Glob | eff) (Array (Array String))
 globAll patterns = makeAff $ runFn3 globAllFn patterns
 
-foreign import globAllFn """
-function globAllFn(patterns, errback, callback) {
-  return function(){
-    var glob = require('glob');
-
-    var async = require('async');
-
-    async.map(patterns, glob, function(error, result){
-      if (error) errback(new Error(error))();
-      else callback(result)();
-    });
-  };
-}
-""" :: forall eff. Fn3 [String]
-                       (Error -> Eff (glob :: Glob | eff) Unit)
-                       ([[String]] -> Eff (glob :: Glob | eff) Unit)
-                       (Eff (glob :: Glob | eff) Unit)
+foreign import globAllFn :: forall eff. Fn3 (Array String)
+                                            (Error -> Eff (glob :: Glob | eff) Unit)
+                                            ((Array (Array String)) -> Eff (glob :: Glob | eff) Unit)
+                                            (Eff (glob :: Glob | eff) Unit)
diff --git a/src/PursLoader/Loader.js b/src/PursLoader/Loader.js
new file mode 100644 (file)
index 0000000..d7b5578
--- /dev/null
@@ -0,0 +1,17 @@
+'use strict'
+
+// module PursLoader.Loader
+
+var path = require('path');
+
+var cwd = process.cwd();
+
+function relative(from) {
+  return function(to){
+    return path.relative(from, to);
+  };
+}
+
+exports.cwd = cwd;
+
+exports.relative = relative;
index e9e03c43ee1786a3497d6948776dfb7f12d4b8b7..5373d2f1e6320c288d59a0b0aa4adec66e147903 100644 (file)
@@ -4,6 +4,8 @@ module PursLoader.Loader
   , loaderFn
   ) where
 
+import Prelude (Unit(), ($), (<>), (>>=), (<$>), (++), bind, flip, id, pure, return, unit)
+
 import Control.Monad.Aff (Aff(), runAff)
 import Control.Monad.Eff (Eff())
 import Control.Monad.Eff.Class (liftEff)
@@ -36,18 +38,11 @@ psciFilename = ".psci"
 
 (!!!) = flip (!!)
 
-foreign import cwd "var cwd = process.cwd();" :: String
+foreign import cwd :: String
 
-foreign import relative """
-function relative(from) {
-  return function(to){
-    var path = require('path');
-    return path.relative(from, to);
-  };
-}
-""" :: String -> String -> String
+foreign import relative :: String -> String -> String
 
-mkPsci :: [[String]] -> [[String]] -> String
+mkPsci :: Array (Array String) -> Array (Array String) -> String
 mkPsci srcs ffis = joinWith "\n" ((loadModule <$> concat srcs) <> (loadForeign <$> concat ffis))
   where
     loadModule :: String -> String
@@ -56,7 +51,7 @@ mkPsci srcs ffis = joinWith "\n" ((loadModule <$> concat srcs) <> (loadForeign <
     loadForeign :: String -> String
     loadForeign a = ":f " ++ relative cwd a
 
-findFFI :: forall eff. [[String]] -> String -> Aff (fs :: FS | eff) (Maybe String)
+findFFI :: forall eff. Array (Array String) -> String -> Aff (fs :: FS | eff) (Maybe String)
 findFFI ffiss name = findFileUtf8 re (concat ffiss)
   where
     re = regex ("(?:^|\\n)//\\s*module\\s*" ++ name ++ "\\s*\\n") noFlags
@@ -79,7 +74,7 @@ loader' ref source = do
 
   writeFileUtf8 psciFilename psciFile
 
-  let moduleName = match moduleRegex source >>= (!!!) 1
+  let moduleName = match moduleRegex source >>= (!!!) 1 >>= id
       hasForeign = test foreignRegex source
       result = (\a -> "module.exports = require('" ++ a ++ "');") <$> moduleName
 
diff --git a/src/PursLoader/LoaderRef.js b/src/PursLoader/LoaderRef.js
new file mode 100644 (file)
index 0000000..3ce0970
--- /dev/null
@@ -0,0 +1,56 @@
+'use strict';
+
+// module PursLoader.LoaderRef
+
+function asyncFn(isJust, fromMaybe, ref){
+  return function(){
+    var callback = ref.async();
+    return function(error){
+      return function(value){
+        return function(){
+          return isJust(error) ? callback(fromMaybe(new Error())(error))
+                               : callback(null, value);
+        };
+      };
+    };
+  };
+}
+function cacheable(ref){
+  return function(){
+    return ref.cacheable && ref.cacheable();
+  };
+}
+
+function query(ref){
+  return ref.query;
+}
+
+function clearDependencies(ref){
+  return function(){
+    return ref.clearDependencies();
+  };
+}
+
+function resourcePath(ref){
+  return ref.resourcePath;
+}
+
+function addDependency(ref){
+  return function(dep){
+    return function(){
+      return ref.addDependency(dep);
+    };
+  };
+}
+
+exports.asyncFn = asyncFn;
+
+exports.cacheable = cacheable;
+
+exports.query = query;
+
+exports.clearDependencies = clearDependencies;
+
+exports.resourcePath = resourcePath;
+
+exports.addDependency = addDependency;
index f1efa04a64c94bcf7469b04c81d1cece7c5023e4..33c4f7e3d162053ffb87da986ea3bb14b7d50ea5 100644 (file)
@@ -9,6 +9,8 @@ module PursLoader.LoaderRef
   , resourcePath
   ) where
 
+import Prelude (Unit())
+
 import Control.Monad.Eff (Eff())
 import Control.Monad.Eff.Exception (Error())
 
@@ -19,56 +21,20 @@ data LoaderRef
 
 foreign import data Loader :: !
 
-foreign import asyncFn """
-function asyncFn(isJust, fromMaybe, ref){
-  return function(){
-    var callback = ref.async();
-    return function(error){
-      return function(value){
-        return function(){
-          return isJust(error) ? callback(fromMaybe(new Error())(error))
-                               : callback(null, value);
-        };
-      };
-    };
-  };
-}""" :: forall eff a. Fn3 (Maybe Error -> Boolean)
-                          (Error -> Maybe Error -> Error)
-                          LoaderRef
-                          (Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit))
+foreign import asyncFn :: forall eff a. Fn3 (Maybe Error -> Boolean)
+                                            (Error -> Maybe Error -> Error)
+                                            LoaderRef
+                                            (Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit))
 
 async :: forall eff a. LoaderRef -> Eff (loader :: Loader | eff) (Maybe Error -> a -> Eff (loader :: Loader | eff) Unit)
 async ref = runFn3 asyncFn isJust fromMaybe ref
 
-foreign import cacheable """
-function cacheable(ref){
-  return function(){
-    return ref.cacheable && ref.cacheable();
-  };
-}""" :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
+foreign import cacheable :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
 
-foreign import query """
-function query(ref){
-  return ref.query;
-}""" :: LoaderRef -> String
+foreign import query :: LoaderRef -> String
 
-foreign import clearDependencies """
-function clearDependencies(ref){
-  return function(){
-    return ref.clearDependencies();
-  };
-}""" :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
+foreign import clearDependencies :: forall eff. LoaderRef -> Eff (loader :: Loader | eff) Unit
 
-foreign import resourcePath """
-function resourcePath(ref){
-  return ref.resourcePath;
-}""" :: LoaderRef -> String
+foreign import resourcePath :: LoaderRef -> String
 
-foreign import addDependency """
-function addDependency(ref){
-  return function(dep){
-    return function(){
-      return ref.addDependency(dep);
-    };
-  };
-}""" :: forall eff. LoaderRef -> String -> Eff (loader :: Loader | eff) Unit
+foreign import addDependency :: forall eff. LoaderRef -> String -> Eff (loader :: Loader | eff) Unit
diff --git a/src/PursLoader/LoaderUtil.js b/src/PursLoader/LoaderUtil.js
new file mode 100644 (file)
index 0000000..45f2703
--- /dev/null
@@ -0,0 +1,7 @@
+'use strict';
+
+// module PursLoader.LoaderUtil
+
+var loaderUtils = require('loader-utils');
+
+exports.parseQuery = loaderUtils.parseQuery;
index 86be124521ccf816f0d1670a5acbaec74d3103b5..3e5a7bc05400aa8c9dbcc3cb8dbdd2b186930ef6 100644 (file)
@@ -6,8 +6,4 @@ import Data.Foreign (Foreign())
 
 import PursLoader.LoaderRef (LoaderRef())
 
-foreign import parseQuery """
-function parseQuery(query){
-  var loaderUtils = require('loader-utils');
-  return loaderUtils.parseQuery(query);
-}""" :: String -> Foreign
+foreign import parseQuery :: String -> Foreign
index 51e9be53cbecaaee4730caf7e1096ddb026afcb4..e3957ebc9c69a4c838c69dfcbb18535ebe82fafc 100644 (file)
@@ -4,6 +4,8 @@ module PursLoader.Options
   , loaderFFIOption
   ) where
 
+import Prelude (Unit(), (<>), (<$>), (<<<), (++), (<*>), const)
+
 import Data.Array (concat)
 import Data.Either (either)
 
@@ -45,8 +47,8 @@ newtype Options
             , output :: NullOrUndefined String
             , noPrefix :: NullOrUndefined Boolean
             , requirePath :: NullOrUndefined String
-            , src :: NullOrUndefined [String]
-            , ffi :: NullOrUndefined [String]
+            , src :: NullOrUndefined (Array String)
+            , ffi :: NullOrUndefined (Array String)
             }
 
 instance isForeignOptions :: IsForeign Options where
@@ -74,7 +76,7 @@ instance isForeignOptions :: IsForeign Options where
                             <*> readProp ffiOpt obj)
 
 class LoaderOption a where
-  opt :: String -> NullOrUndefined a -> [String]
+  opt :: String -> NullOrUndefined a -> Array String
 
 instance booleanLoaderOption :: LoaderOption Boolean where
   opt key val = maybe [] (\a -> if a then ["--" ++ key] else []) (runNullOrUndefined val)
@@ -82,11 +84,11 @@ instance booleanLoaderOption :: LoaderOption Boolean where
 instance stringLoaderOption :: LoaderOption String where
   opt key val = maybe [] (\a -> ["--" ++ key ++ "=" ++ a]) (runNullOrUndefined val)
 
-instance arrayLoaderOption :: (LoaderOption a) => LoaderOption [a] where
+instance arrayLoaderOption :: (LoaderOption a) => LoaderOption (Array a) where
   opt key val = concat (opt key <$> (NullOrUndefined <<< Just)
                                 <$> (fromMaybe [] (runNullOrUndefined val)))
 
-pscOptions :: Foreign -> [String]
+pscOptions :: Foreign -> Array String
 pscOptions query = either (const []) fold parsed
   where parsed = read query :: F Options
         fold (Options a) = opt noPreludeOpt a.noPrelude <>
@@ -100,8 +102,8 @@ pscOptions query = either (const []) fold parsed
                            opt requirePathOpt a.requirePath <>
                            opt ffiOpt a.ffi
 
-loaderSrcOption :: Foreign -> Maybe [String]
+loaderSrcOption :: Foreign -> Maybe (Array String)
 loaderSrcOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.src) (read query)
 
-loaderFFIOption :: Foreign -> Maybe [String]
+loaderFFIOption :: Foreign -> Maybe (Array String)
 loaderFFIOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.ffi) (read query)