-- | The functions of this module are identical to use the command line tool. -- -- The modules "Exomizer.Raw" and "Exomizer.Mem" give more options. -- -- Each function is listed with and without an underscore at the end. -- The variant with the underscore does not return the compression info but the compression result is identical. module Exomizer ( -- * Options & Info CrunchOptions , coEncoding , coMaxPasses , coMaxLen , coMaxOffset , coUseLiteralSequences , coFavourSpeed , defaultCrunchOptions , CrunchInfo , ciLiteralSequencesUsed , ciNeededSafetyOffset , ciUsedEncoding -- * Raw , exomizerRaw , exomizerRaw_ , exomizerRawBackwards , exomizerRawBackwards_ , exomizerRawReverse , exomizerRawReverse_ , exomizerRawBackwardsReverse , exomizerRawBackwardsReverse_ -- * Mem , exomizerMem , exomizerMem_ , exomizerMemForward , exomizerMemForward_ -- * Level , exomizerLevel_ , exomizerLevelForward_ ) where import Data.ByteString (ByteString) import Data.Int import Exomizer.Mem import Exomizer.Raw -- raw -- | Same as @exomizer raw@ -- -- @since 1.0.0 exomizerRaw :: CrunchOptions -> ByteString -> (ByteString, CrunchInfo) {-# INLINABLE exomizerRaw #-} exomizerRaw = rawCrunch (Forward `ReadWrite` Forward) -- | Same as @exomizer raw@ -- -- @since 1.0.0 exomizerRaw_ :: CrunchOptions -> ByteString -> ByteString {-# INLINABLE exomizerRaw_ #-} exomizerRaw_ = rawCrunch_ (Forward `ReadWrite` Forward) -- | Same as @exomizer raw -b@ -- -- @since 1.0.0 exomizerRawBackwards :: CrunchOptions -> ByteString -> (ByteString, CrunchInfo) {-# INLINABLE exomizerRawBackwards #-} exomizerRawBackwards = rawCrunch (Backwards `ReadWrite` Backwards) -- | Same as @exomizer raw -b@ -- -- @since 1.0.0 exomizerRawBackwards_ :: CrunchOptions -> ByteString -> ByteString {-# INLINABLE exomizerRawBackwards_ #-} exomizerRawBackwards_ = rawCrunch_ (Backwards `ReadWrite` Backwards) -- | Same as @exomizer raw -r@ -- -- @since 1.0.0 exomizerRawReverse :: CrunchOptions -> ByteString -> (ByteString, CrunchInfo) {-# INLINABLE exomizerRawReverse #-} exomizerRawReverse = rawCrunch (Backwards `ReadWrite` Forward) -- | Same as @exomizer raw -r@ -- -- @since 1.0.0 exomizerRawReverse_ :: CrunchOptions -> ByteString -> ByteString {-# INLINABLE exomizerRawReverse_ #-} exomizerRawReverse_ = rawCrunch_ (Backwards `ReadWrite` Forward) -- | Same as @exomizer raw -b -r@ -- -- @since 1.0.0 exomizerRawBackwardsReverse :: CrunchOptions -> ByteString -> (ByteString, CrunchInfo) {-# INLINABLE exomizerRawBackwardsReverse #-} exomizerRawBackwardsReverse = rawCrunch (Forward `ReadWrite` Backwards) -- | Same as @exomizer raw -b -r@ -- -- @since 1.0.0 exomizerRawBackwardsReverse_ :: CrunchOptions -> ByteString -> ByteString {-# INLINABLE exomizerRawBackwardsReverse_ #-} exomizerRawBackwardsReverse_ = rawCrunch_ (Forward `ReadWrite` Backwards) -- mem -- | Same as @exomizer mem -l none@ -- -- @since 1.0.0 exomizerMem :: CrunchOptions -> [(Int16, ByteString)] -> (ByteString, CrunchInfo) {-# INLINABLE exomizerMem #-} exomizerMem co xs = memCrunch (Backwards `ReadWrite` Backwards) co (joinChunks 0 xs) -- | Same as @exomizer mem -l none@ -- -- @since 1.0.0 exomizerMem_ :: CrunchOptions -> [(Int16, ByteString)] -> ByteString {-# INLINABLE exomizerMem_ #-} exomizerMem_ co xs = memCrunch_ (Backwards `ReadWrite` Backwards) co (joinChunks 0 xs) -- | Same as @exomizer mem -l none -f@ -- -- @since 1.0.0 exomizerMemForward :: CrunchOptions -> [(Int16, ByteString)] -> (ByteString, CrunchInfo) {-# INLINABLE exomizerMemForward #-} exomizerMemForward co xs = memCrunch (Forward `ReadWrite` Forward) co (joinChunks 0 xs) -- | Same as @exomizer mem -l none -f@ -- -- @since 1.0.0 exomizerMemForward_ :: CrunchOptions -> [(Int16, ByteString)] -> ByteString {-# INLINABLE exomizerMemForward_ #-} exomizerMemForward_ co xs = memCrunch_ (Forward `ReadWrite` Forward) co (joinChunks 0 xs) -- level -- | Same as @exomizer level@ -- -- @since 1.0.0 exomizerLevel_ :: CrunchOptions -> [(Int16, ByteString)] -> ByteString {-# INLINABLE exomizerLevel_ #-} exomizerLevel_ co xs = mconcat $ map (memCrunch_ (Forward `ReadWrite` Backwards) co) xs -- | Same as @exomizer level -f@ -- -- @since 1.0.0 exomizerLevelForward_ :: CrunchOptions -> [(Int16, ByteString)] -> ByteString {-# INLINABLE exomizerLevelForward_ #-} exomizerLevelForward_ co xs = mconcat $ map (memCrunch_ (Forward `ReadWrite` Forward) co) xs