@@ -33,7 +33,7 @@ module Main where
33import Text.Pandoc
33import Text.Pandoc
34import Text.Pandoc.PDF (tex2pdf)
34import Text.Pandoc.PDF (tex2pdf)
35import Text.Pandoc.Readers.LaTeX (handleIncludes)
35import Text.Pandoc.Readers.LaTeX (handleIncludes)
36−import Text.Pandoc.Shared ( tabFilter, readDataFile,
36+import Text.Pandoc.Shared ( tabFilter, readDataFile, safeRead,
37 headerShift, findDataFile, normalize, err, warn )
37 headerShift, findDataFile, normalize, err, warn )
38import Text.Pandoc.XML ( toEntities, fromEntities )
38import Text.Pandoc.XML ( toEntities, fromEntities )
39import Text.Pandoc.SelfContained ( makeSelfContained )
39import Text.Pandoc.SelfContained ( makeSelfContained )
@@ -279,13 +279,13 @@ options =
279 , Option "" ["base-header-level"]
279 , Option "" ["base-header-level"]
281 (\arg opt ->
281 (\arg opt ->
282− case reads arg of
282+ case safeRead arg of
283− [(t,"")] | t > 0 -> do
283+ Just t | t > 0 -> do
284 let oldTransforms = optTransforms opt
284 let oldTransforms = optTransforms opt
285 let shift = t - 1
285 let shift = t - 1
286 return opt{ optTransforms =
286 return opt{ optTransforms =
287 headerShift shift : oldTransforms }
287 headerShift shift : oldTransforms }
288− _ -> err 19
288+ _ -> err 19
289 "base-header-level must be a number > 0")
289 "base-header-level must be a number > 0")
290 "NUMBER")
290 "NUMBER")
291 "" -- "Headers base level"
291 "" -- "Headers base level"
@@ -311,9 +311,9 @@ options =
311 , Option "" ["tab-stop"]
311 , Option "" ["tab-stop"]
313 (\arg opt ->
313 (\arg opt ->
314− case reads arg of
314+ case safeRead arg of
315− [(t,"")] | t > 0 -> return opt { optTabStop = t }
315+ Just t | t > 0 -> return opt { optTabStop = t }
316− _ -> err 31
316+ _ -> err 31
317 "tab-stop must be a number greater than 0")
317 "tab-stop must be a number greater than 0")
318 "NUMBER")
318 "NUMBER")
319 "" -- "Tab stop (default 4)"
319 "" -- "Tab stop (default 4)"
@@ -360,9 +360,9 @@ options =
360 , Option "" ["columns"]
360 , Option "" ["columns"]
362 (\arg opt ->
362 (\arg opt ->
363− case reads arg of
363+ case safeRead arg of
364− [(t,"")] | t > 0 -> return opt { optColumns = t }
364+ Just t | t > 0 -> return opt { optColumns = t }
365− _ -> err 33 $
365+ _ -> err 33 $
366 "columns must be a number greater than 0")
366 "columns must be a number greater than 0")
367 "NUMBER")
367 "NUMBER")
368 "" -- "Length of line in characters"
368 "" -- "Length of line in characters"
@@ -494,10 +494,10 @@ options =
494 , Option "" ["slide-level"]
494 , Option "" ["slide-level"]
496 (\arg opt -> do
496 (\arg opt -> do
497− case reads arg of
497+ case safeRead arg of
498− [(t,"")] | t >= 1 && t <= 6 ->
498+ Just t | t >= 1 && t <= 6 ->
499 return opt { optSlideLevel = Just t }
499 return opt { optSlideLevel = Just t }
500− _ -> err 39 $
500+ _ -> err 39 $
501 "slide level must be a number between 1 and 6")
501 "slide level must be a number between 1 and 6")
502 "NUMBER")
502 "NUMBER")
503 "" -- "Force header level for slides"
503 "" -- "Force header level for slides"
@@ -713,9 +713,9 @@ options =
715readExtension :: String -> IO Extension
715readExtension :: String -> IO Extension
716−readExtension s = case reads ('E':'x':'t':'_':map toLower s) of
716+readExtension s = case safeRead ('E':'x':'t':'_':map toLower s) of
717− ((ext,""):_) -> return ext
717+ Just ext -> return ext
718− _ -> err 59 $ "Unknown extension: " ++ s
718+ Nothing -> err 59 $ "Unknown extension: " ++ s
720-- Returns usage message
720-- Returns usage message
721usageMessage :: String -> [OptDescr (Opt -> IO Opt)] -> String
721usageMessage :: String -> [OptDescr (Opt -> IO Opt)] -> String