Adapt main for new Hufflepdf using strict ByteStrings + replace buggy lines / unlines by correct implementations
This commit is contained in:
parent
042f3e4fc4
commit
bb064eb0c7
1 changed files with 13 additions and 6 deletions
19
src/Main.hs
19
src/Main.hs
|
@ -2,21 +2,28 @@
|
||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
import Codec.Compression.Zlib (compress, decompress)
|
import Codec.Compression.Zlib (compress, decompress)
|
||||||
import Data.ByteString.Lazy.Char8 (ByteString)
|
import Data.ByteString.Char8 (ByteString)
|
||||||
import qualified Data.ByteString.Lazy.Char8 as BS (
|
import qualified Data.ByteString.Char8 as BS (
|
||||||
length, lines, readFile, unlines, writeFile
|
length, readFile
|
||||||
|
)
|
||||||
|
import qualified Data.ByteString.Lazy.Char8 as Lazy (
|
||||||
|
fromStrict, intercalate, pack, split, toStrict, writeFile
|
||||||
)
|
)
|
||||||
import qualified Data.Map as Map (insert, lookup)
|
import qualified Data.Map as Map (insert, lookup)
|
||||||
import PDF (Document(..), parseDocument, render)
|
import PDF (Document(..), parseDocument, render)
|
||||||
import PDF.Object (Content(..), DirectObject(..), Object(..), Name(..), Number(..))
|
import PDF.Object (Content(..), DirectObject(..), Object(..), Name(..), Number(..))
|
||||||
import PDF.TextRendering (TextRendering(..), update)
|
import PDF.TextRendering (TextRendering(..), update)
|
||||||
|
import Prelude hiding (lines, unlines)
|
||||||
import System.Environment (getArgs)
|
import System.Environment (getArgs)
|
||||||
import System.IO (hPutStrLn, stderr)
|
import System.IO (hPutStrLn, stderr)
|
||||||
|
|
||||||
revealFlateEncodedText :: ByteString -> ByteString
|
revealFlateEncodedText :: ByteString -> ByteString
|
||||||
revealFlateEncodedText = compress . revealText . decompress
|
revealFlateEncodedText =
|
||||||
|
Lazy.toStrict . compress . revealText . decompress . Lazy.fromStrict
|
||||||
where
|
where
|
||||||
revealText = BS.unlines . fmap fill . BS.lines
|
lines = Lazy.split '\n'
|
||||||
|
unlines = Lazy.intercalate $ Lazy.pack "\n"
|
||||||
|
revealText = unlines . fmap fill . lines
|
||||||
fill = update $ const Fill
|
fill = update $ const Fill
|
||||||
|
|
||||||
revealObject :: Object -> Object
|
revealObject :: Object -> Object
|
||||||
|
@ -48,4 +55,4 @@ main = do
|
||||||
result <- parseDocument <$> BS.readFile inputPath
|
result <- parseDocument <$> BS.readFile inputPath
|
||||||
case result of
|
case result of
|
||||||
Left parseError -> hPutStrLn stderr $ show parseError
|
Left parseError -> hPutStrLn stderr $ show parseError
|
||||||
Right doc -> BS.writeFile outputPath . render $ reveal doc
|
Right doc -> Lazy.writeFile outputPath . render $ reveal doc
|
||||||
|
|
Loading…
Reference in a new issue