From 1e0114441b11807097480ed9c23762bb65eea2b8 Mon Sep 17 00:00:00 2001 From: Tissevert Date: Fri, 24 May 2019 10:22:43 +0200 Subject: [PATCH] Replace words / unwords, it's broken too --- src/Main.hs | 5 +++-- src/PDF/TextRendering.hs | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Main.hs b/src/Main.hs index 1b18b27..20fcd6a 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -1,4 +1,5 @@ {-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} module Main where import Codec.Compression.Zlib (compress, decompress) @@ -7,7 +8,7 @@ import qualified Data.ByteString.Char8 as BS ( length, readFile ) import qualified Data.ByteString.Lazy.Char8 as Lazy ( - fromStrict, intercalate, pack, split, toStrict, writeFile + fromStrict, intercalate, split, toStrict, writeFile ) import qualified Data.Map as Map (insert, lookup) import PDF (Document(..), parseDocument, render) @@ -22,7 +23,7 @@ revealFlateEncodedText = Lazy.toStrict . compress . revealText . decompress . Lazy.fromStrict where lines = Lazy.split '\n' - unlines = Lazy.intercalate $ Lazy.pack "\n" + unlines = Lazy.intercalate "\n" revealText = unlines . fmap fill . lines fill = update $ const Fill diff --git a/src/PDF/TextRendering.hs b/src/PDF/TextRendering.hs index e61fbc0..2b81c6a 100644 --- a/src/PDF/TextRendering.hs +++ b/src/PDF/TextRendering.hs @@ -5,7 +5,8 @@ module PDF.TextRendering ( ) where import Data.ByteString.Lazy.Char8 (ByteString) -import qualified Data.ByteString.Lazy.Char8 as BS (pack, readInt, unwords, words) +import qualified Data.ByteString.Lazy.Char8 as BS (intercalate, pack, readInt, split) +import Prelude hiding (unwords, words) data TextRendering = Fill @@ -18,12 +19,15 @@ data TextRendering = | AddPath deriving (Enum, Show) + + update :: (TextRendering -> TextRendering) -> ByteString -> ByteString -update f = BS.unwords . changeTextRendering . BS.words +update f = unwords . changeTextRendering . words where - changeTextRendering :: [ByteString] -> [ByteString] changeTextRendering l@[value, "Tr"] = case BS.readInt value of Just (n, _) -> [BS.pack . show . fromEnum . f $ toEnum n, "Tr"] _ -> l changeTextRendering l = l + words = BS.split ' ' + unwords = BS.intercalate " "