pdf-toolbox-content 0.0.4.0 → 0.0.5.0
raw patch · 4 files changed
+28/−6 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Pdf.Toolbox.Content.Parser: parseContent :: Parser (Maybe Expr)
Files
- changelog.md +5/−0
- lib/Pdf/Toolbox/Content/Parser.hs +2/−1
- lib/Pdf/Toolbox/Content/UnicodeCMap.hs +20/−4
- pdf-toolbox-content.cabal +1/−1
changelog.md view
@@ -1,3 +1,8 @@+0.0.5.0++* add support for multiple bfrange and bfchars sections in CMap+* support spaces inside hex numbers in CMap+ 0.0.4.0 * switch to errors-2.0
lib/Pdf/Toolbox/Content/Parser.hs view
@@ -4,7 +4,8 @@ module Pdf.Toolbox.Content.Parser ( parseContentStream,- readNextOperator+ readNextOperator,+ parseContent ) where
lib/Pdf/Toolbox/Content/UnicodeCMap.hs view
@@ -14,6 +14,7 @@ import Data.Monoid import Data.Functor import Data.Char+import qualified Data.List as List import Data.Map (Map) import qualified Data.Map as Map import Data.ByteString (ByteString)@@ -89,7 +90,13 @@ charsParser :: Parser (Map Int Text) charsParser = do- n <- P.option 0 $ skipTillParser $ do+ combineChars <$> P.many' charsParser'+ where+ combineChars = List.foldl' Map.union Map.empty++charsParser' :: Parser (Map Int Text)+charsParser' = do+ n <- skipTillParser $ do n <- P.decimal P.skipSpace _ <- P.string "beginbfchar"@@ -108,8 +115,16 @@ -- -- Array ranges are converted to char map rangesParser :: Parser ([(Int, Int, Char)], Map Int Text)-rangesParser = do- n <- P.option (0 :: Int) $ skipTillParser $ do+rangesParser =+ combineRanges <$> P.many' rangesParser'+ where+ combineRanges = List.foldl' combineRange ([], Map.empty)+ combineRange (ranges, rmap) (ranges', rmap') =+ (ranges ++ ranges', Map.union rmap rmap')++rangesParser' :: Parser ([(Int, Int, Char)], Map Int Text)+rangesParser' = do+ n <- skipTillParser $ do n <- P.decimal P.skipSpace void $ P.string "beginbfrange"@@ -153,7 +168,8 @@ parseHex :: Parser ByteString parseHex = do void $ P.char '<'- res <- P.takeTill (== '>') >>= fromHex+ -- hex can contain spaces, lets filter them out+ res <- P.takeTill (== '>') >>= fromHex . BS.filter (/= 32) void $ P.char '>' return res
pdf-toolbox-content.cabal view
@@ -1,5 +1,5 @@ name: pdf-toolbox-content-version: 0.0.4.0+version: 0.0.5.0 synopsis: A collection of tools for processing PDF files license: BSD3 license-file: LICENSE