@@ -33,7 +33,7 @@ module Main where
3333import Text.Pandoc
3434import Text.Pandoc.PDF (tex2pdf)
3535import Text.Pandoc.Readers.LaTeX (handleIncludes)
36−import Text.Pandoc.Shared ( tabFilter, readDataFile,
36+import Text.Pandoc.Shared ( tabFilter, readDataFile, safeRead,
3737 headerShift, findDataFile, normalize, err, warn )
3838import Text.Pandoc.XML ( toEntities, fromEntities )
3939import Text.Pandoc.SelfContained ( makeSelfContained )
@@ -279,13 +279,13 @@ options =
279279 , Option "" ["base-header-level"]
280280 (ReqArg
281281 (\arg opt ->
282− case reads arg of
283− [(t,"")] | t > 0 -> do
282+ case safeRead arg of
283+ Just t | t > 0 -> do
284284 let oldTransforms = optTransforms opt
285285 let shift = t - 1
286286 return opt{ optTransforms =
287287 headerShift shift : oldTransforms }
288− _ -> err 19
288+ _ -> err 19
289289 "base-header-level must be a number > 0")
290290 "NUMBER")
291291 "" -- "Headers base level"
@@ -311,9 +311,9 @@ options =
311311 , Option "" ["tab-stop"]
312312 (ReqArg
313313 (\arg opt ->
314− case reads arg of
315− [(t,"")] | t > 0 -> return opt { optTabStop = t }
316− _ -> err 31
314+ case safeRead arg of
315+ Just t | t > 0 -> return opt { optTabStop = t }
316+ _ -> err 31
317317 "tab-stop must be a number greater than 0")
318318 "NUMBER")
319319 "" -- "Tab stop (default 4)"
@@ -360,9 +360,9 @@ options =
360360 , Option "" ["columns"]
361361 (ReqArg
362362 (\arg opt ->
363− case reads arg of
364− [(t,"")] | t > 0 -> return opt { optColumns = t }
365− _ -> err 33 $
363+ case safeRead arg of
364+ Just t | t > 0 -> return opt { optColumns = t }
365+ _ -> err 33 $
366366 "columns must be a number greater than 0")
367367 "NUMBER")
368368 "" -- "Length of line in characters"
@@ -494,10 +494,10 @@ options =
494494 , Option "" ["slide-level"]
495495 (ReqArg
496496 (\arg opt -> do
497− case reads arg of
498− [(t,"")] | t >= 1 && t <= 6 ->
497+ case safeRead arg of
498+ Just t | t >= 1 && t <= 6 ->
499499 return opt { optSlideLevel = Just t }
500− _ -> err 39 $
500+ _ -> err 39 $
501501 "slide level must be a number between 1 and 6")
502502 "NUMBER")
503503 "" -- "Force header level for slides"
@@ -713,9 +713,9 @@ options =
713713 ]
714714
715715readExtension :: String -> IO Extension
716−readExtension s = case reads ('E':'x':'t':'_':map toLower s) of
717− ((ext,""):_) -> return ext
718− _ -> err 59 $ "Unknown extension: " ++ s
716+readExtension s = case safeRead ('E':'x':'t':'_':map toLower s) of
717+ Just ext -> return ext
718+ Nothing -> err 59 $ "Unknown extension: " ++ s
719719
720720-- Returns usage message
721721usageMessage :: String -> [OptDescr (Opt -> IO Opt)] -> String