git.iko.soy/typeable/pandoc
on master help sign in
Avoid non-exhaustive pattern match.
commit7bc879268c1a86799a642280c296011e07e98c77 authorJohn MacFarlane <jgm@berkeley.edu> dateFri 10 Aug 2018, 15:13 (8 years ago) parente055f1b
1 file changed+12−10
src/Text/Pandoc/ImageSize.hs+12−10
src/Text/Pandoc/ImageSize.hs+12−10
@@ -319,20 +319,22 @@ pngSize img = do
319319 (shift w1 24 + shift w2 16 + shift w3 8 + w4,
320320 shift h1 24 + shift h2 16 + shift h3 8 + h4)
321321 _ -> Nothing -- "PNG parse error"
322− let (dpix, dpiy) = findpHYs rest''
322+ (dpix, dpiy) <- findpHYs rest''
323323 return ImageSize { pxX = x, pxY = y, dpiX = dpix, dpiY = dpiy }
324324
325−findpHYs :: ByteString -> (Integer, Integer)
325+findpHYs :: ByteString -> Maybe (Integer, Integer)
326326findpHYs x
327− | B.null x || "IDAT" `B.isPrefixOf` x = (72,72)
327+ | B.null x || "IDAT" `B.isPrefixOf` x = return (72,72)
328328 | "pHYs" `B.isPrefixOf` x =
329− let [x1,x2,x3,x4,y1,y2,y3,y4,u] =
330− map fromIntegral $ unpack $ B.take 9 $ B.drop 4 x
331− factor = if u == 1 -- dots per meter
332− then \z -> z * 254 `div` 10000
333− else const 72
334− in ( factor $ shift x1 24 + shift x2 16 + shift x3 8 + x4,
335− factor $ shift y1 24 + shift y2 16 + shift y3 8 + y4 )
329+ case map fromIntegral $ unpack $ B.take 9 $ B.drop 4 x of
330+ [x1,x2,x3,x4,y1,y2,y3,y4,u] -> do
331+ let factor = if u == 1 -- dots per meter
332+ then \z -> z * 254 `div` 10000
333+ else const 72
334+ return
335+ ( factor $ shift x1 24 + shift x2 16 + shift x3 8 + x4,
336+ factor $ shift y1 24 + shift y2 16 + shift y3 8 + y4 )
337+ _ -> mzero
336338 | otherwise = findpHYs $ B.drop 1 x -- read another byte
337339
338340gifSize :: ByteString -> Maybe ImageSize