- read obj = Options <$> ({ noPrelude: _
- , noOpts: _
- , noMagicDo: _
- , noTco: _
- , verboseErrors: _
- , comments: _
- , output: _
- , noPrefix: _
- , requirePath: "../"
- , src: _
- , ffi: _
- } <$> readProp noPreludeOpt obj
- <*> readProp noOptsOpt obj
- <*> readProp noMagicDoOpt obj
- <*> readProp noTcoOpt obj
- <*> readProp verboseErrorsOpt obj
- <*> readProp commentsOpt obj
- <*> (maybe "output" id <<< runNullOrUndefined <$> readProp outputOpt obj)
- <*> readProp noPrefixOpt obj
- <*> readProp srcOpt obj
- <*> readProp ffiOpt obj)
-
-class LoaderOption a where
- opt :: String -> NullOrUndefined a -> Array String
-
-instance booleanLoaderOption :: LoaderOption Boolean where
- opt key val = maybe [] (\a -> if a then ["--" ++ key] else []) (runNullOrUndefined val)
-
-instance stringLoaderOption :: LoaderOption String where
- opt key val = maybe [] (\a -> ["--" ++ key ++ "=" ++ a]) (runNullOrUndefined val)
-
-instance arrayLoaderOption :: (LoaderOption a) => LoaderOption (Array a) where
- opt key val = concat (opt key <$> (NullOrUndefined <<< Just)
- <$> (fromMaybe [] (runNullOrUndefined val)))
-
-pscOptions :: Options -> Array String
-pscOptions (Options a) = opt noPreludeOpt a.noPrelude <>
- opt noOptsOpt a.noOpts <>
- opt noMagicDoOpt a.noMagicDo <>
- opt noTcoOpt a.noTco <>
- opt verboseErrorsOpt a.verboseErrors <>
- opt commentsOpt a.comments <>
- opt outputOpt (NullOrUndefined $ Just a.output) <>
- opt noPrefixOpt a.noPrefix <>
- opt requirePathOpt (NullOrUndefined $ Just a.requirePath) <>
- opt ffiOpt a.ffi
-
-loaderSrcOption :: Foreign -> Maybe (Array String)
-loaderSrcOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.src) (read query)
-
-loaderFFIOption :: Foreign -> Maybe (Array String)
-loaderFFIOption query = either (const Nothing) (\(Options a) -> runNullOrUndefined a.ffi) (read query)