omnicodec 0.7 → 0.8
raw patch · 4 files changed
+78/−83 lines, 4 filesdep ~basedep ~bytestringdep ~cmdargssetup-changed
Dependency ranges changed: base, bytestring, cmdargs, conduit, sandi, transformers
Files
- Setup.hs +0/−5
- omnicodec.cabal +47/−40
- src/odec.hs +15/−20
- src/oenc.hs +16/−18
− Setup.hs
@@ -1,5 +0,0 @@-#! /usr/bin/env runhaskell--import Distribution.Simple-main = defaultMain-
omnicodec.cabal view
@@ -1,46 +1,53 @@-name: omnicodec-version: 0.7-license: OtherLicense-license-file: COPYING-author: Magnus Therning-maintainer: magnus@therning.org-copyright: Magnus Therning, 2012-synopsis: data encoding and decoding command line utilities-description: Two simple command line tools built on sandi- (http://hackage.haskell.org/package/sandi).-build-type: Simple-category: Codec-cabal-version: >= 1.6+cabal-version: 1.12 -source-repository head- type: git- location: https://github.com/magthe/omnicodec+-- This file has been generated from package.yaml by hpack version 0.31.1.+--+-- see: https://github.com/sol/hpack+--+-- hash: ae6d7c6f78d12539cc6fe2febc529b9aecc04f2c70f1f2a1e869819dd375d535 -source-repository this- type: git- location: https://github.com/magthe/omnicodec- tag: REL_0.6+name: omnicodec+version: 0.8+synopsis: Data encoding and decoding command line utilities+description: Two simple command line tools built on sandi (http://hackage.haskell.org/package/sandi).+category: Codec+maintainer: Magnus Therning <magnus@therning.org>+license: OtherLicense+license-file: COPYING+build-type: Simple +source-repository head+ type: git+ location: https://github.com/magthe/omnicodec.git+ executable odec- main-is: odec.hs- hs-source-dirs: src- build-depends:- base ==4.6.*,- cmdargs ==0.10.*,- conduit ==1.0.*,- bytestring ==0.10.*,- sandi ==0.2.*,- transformers ==0.3.*- ghc-options: -Wall+ main-is: odec.hs+ other-modules:+ Paths_omnicodec+ hs-source-dirs:+ src+ ghc-options: -Wall+ build-depends:+ base <5+ , bytestring+ , cmdargs+ , conduit+ , sandi+ , transformers+ default-language: Haskell2010 executable oenc- main-is: oenc.hs- hs-source-dirs: src- build-depends:- base ==4.6.*,- cmdargs ==0.10.*,- conduit ==1.0.*,- bytestring ==0.10.*,- sandi ==0.2.*,- transformers ==0.3.*- ghc-options: -Wall+ main-is: oenc.hs+ other-modules:+ Paths_omnicodec+ hs-source-dirs:+ src+ ghc-options: -Wall+ build-depends:+ base <5+ , bytestring+ , cmdargs+ , conduit+ , sandi+ , transformers+ default-language: Haskell2010
src/odec.hs view
@@ -23,35 +23,32 @@ import Control.Exception import Control.Monad.IO.Class--- import Control.Monad import Data.ByteString as BS+import Data.Conduit+import Data.Conduit.Combinators (sinkHandle, sourceHandle) import Data.Maybe import Data.Version(showVersion) import System.Console.CmdArgs--- import System.Exit import System.IO as SIO-import Data.Conduit-import Data.Conduit.Binary -import qualified Data.Conduit.Codec.Base64 as B64-import qualified Data.Conduit.Codec.Base64Url as B64U+import qualified Data.Conduit.Codec.Base16 as B16 import qualified Data.Conduit.Codec.Base32 as B32 import qualified Data.Conduit.Codec.Base32Hex as B32H-import qualified Data.Conduit.Codec.Base16 as B16+import qualified Data.Conduit.Codec.Base64 as B64+import qualified Data.Conduit.Codec.Base64Url as B64U import qualified Data.Conduit.Codec.Base85 as B85 import qualified Data.Conduit.Codec.QuotedPrintable as QP import qualified Data.Conduit.Codec.Uu as Uu import qualified Data.Conduit.Codec.Xx as Xx --- {{{1 command line options ver :: String-ver = "omnicode decode (odec) " ++ (showVersion version)+ver = "omnicode decode (odec) " ++ showVersion version ++ "\nCopyright 2012 Magnus Therning <magnus@therning.org>" data Codec = B64 | B64U | B32 | B32H | B16 | B85 | QP | Uu | Xx deriving(Show, Eq, Data, Typeable) -codecMap :: [(Codec, Conduit ByteString (ResourceT IO) ByteString)]+codecMap :: [(Codec, ConduitT ByteString ByteString IO ())] codecMap = [ (B64, B64.decode) , (B64U, B64U.decode)@@ -89,25 +86,23 @@ -- , " url - url encoding" ] --- {{{1 main main :: IO ()-main = do+main = cmdArgs myArgs >>= \ a -> do- let decFunc = lookup (argCodec a) codecMap- withMaybeFile (argInput a) ReadMode $ \ inputFile ->+ let decFunc = lookup (argCodec a) codecMap+ withMaybeFile (argInput a) ReadMode $ \ inputFile -> withMaybeFile (argOutput a) WriteMode $ \ outputFile ->- runResourceT $ decodeFile (fromJust decFunc) inputFile outputFile+ runConduit $ decodeFile (fromJust decFunc) inputFile outputFile withMaybeFile :: Maybe FilePath -> IOMode -> (Handle -> IO r) -> IO r withMaybeFile fn mode func = let dH = if mode == ReadMode then stdin else stdout- in bracket - (maybe (return dH) (flip openFile mode) fn)+ in bracket+ (maybe (return dH) (`openFile` mode) fn) hClose func --- decodeFile :: (BS.ByteString -> Either a BS.ByteString) -> Handle -> Handle -> IO ()-decodeFile :: (MonadIO m) => Conduit ByteString m ByteString -> Handle -> Handle -> m ()-decodeFile decFunc inF outF = sourceHandle inF $= decFunc $$ sinkHandle outF+decodeFile :: MonadIO m => ConduitM ByteString ByteString m () -> Handle -> Handle -> ConduitM a c m ()+decodeFile decFunc inF outF = sourceHandle inF .| decFunc .| sinkHandle outF
src/oenc.hs view
@@ -22,34 +22,33 @@ import Paths_omnicodec (version) import Control.Exception+import Control.Monad.IO.Class import Data.ByteString as BS+import Data.Conduit+import Data.Conduit.Combinators (sinkHandle, sourceHandle) import Data.Maybe import Data.Version(showVersion) import System.Console.CmdArgs import System.IO-import Data.Conduit-import Data.Conduit.Binary-import Control.Monad.IO.Class -import qualified Data.Conduit.Codec.Base64 as B64-import qualified Data.Conduit.Codec.Base64Url as B64U+import qualified Data.Conduit.Codec.Base16 as B16 import qualified Data.Conduit.Codec.Base32 as B32 import qualified Data.Conduit.Codec.Base32Hex as B32H-import qualified Data.Conduit.Codec.Base16 as B16+import qualified Data.Conduit.Codec.Base64 as B64+import qualified Data.Conduit.Codec.Base64Url as B64U import qualified Data.Conduit.Codec.Base85 as B85 import qualified Data.Conduit.Codec.QuotedPrintable as QP import qualified Data.Conduit.Codec.Uu as Uu import qualified Data.Conduit.Codec.Xx as Xx --- {{{1 command line options ver :: String-ver = "omnicode encode (oenc) " ++ (showVersion version)+ver = "omnicode encode (oenc) " ++ showVersion version ++ "\nCopyright 2012 Magnus Therning <magnus@therning.org>" data Codec = B64 | B64U | B32 | B32H | B16 | B85 | QP | Uu | Xx deriving(Show, Eq, Data, Typeable) -codecMap :: [(Codec, Conduit ByteString (ResourceT IO) ByteString)]+codecMap :: [(Codec, ConduitT ByteString ByteString IO ())] codecMap = [ (B64, B64.encode) , (B64U, B64U.encode)@@ -85,24 +84,23 @@ -- , " url - url encoding" ] --- {{{1 main main :: IO ()-main = do+main = cmdArgs myArgs >>= \ a -> do- let encFunc = lookup (argCodec a) codecMap- withMaybeFile (argInput a) ReadMode $ \ inputFile ->+ let encFunc = lookup (argCodec a) codecMap+ withMaybeFile (argInput a) ReadMode $ \ inputFile -> withMaybeFile (argOutput a) WriteMode $ \ outputFile ->- runResourceT $ encodeFile (fromJust encFunc) inputFile outputFile+ runConduit $ encodeFile (fromJust encFunc) inputFile outputFile withMaybeFile :: Maybe FilePath -> IOMode -> (Handle -> IO r) -> IO r withMaybeFile fn mode func = let dH = if mode == ReadMode then stdin else stdout- in bracket - (maybe (return dH) (flip openFile mode) fn)+ in bracket+ (maybe (return dH) (`openFile` mode) fn) hClose func -encodeFile :: (MonadIO m) => Conduit ByteString m ByteString -> Handle -> Handle -> m ()-encodeFile encFunc inF outF = sourceHandle inF $= encFunc $$ sinkHandle outF+encodeFile :: MonadIO m => ConduitM ByteString ByteString m () -> Handle -> Handle -> ConduitM a c m ()+encodeFile encFunc inF outF = sourceHandle inF .| encFunc .| sinkHandle outF