git.iko.soy/typeable/pandoc
on master help sign in
Added safeRead to Text.Pandoc.Shared.
10cdd59John MacFarlane
src/Text/Pandoc/Shared.hs+12−1
@@ -65,7 +65,9 @@ module Text.Pandoc.Shared (
65 readDataFile,
65 readDataFile,
66 -- * Error handling
66 -- * Error handling
67 err,
67 err,
68− warn
68+ warn,
69+ -- * Safe read
70+ safeRead
69 ) where
71 ) where
70
72
71import Text.Pandoc.Definition
73import Text.Pandoc.Definition
@@ -489,3 +491,12 @@ warn :: String -> IO ()
489warn msg = do
491warn msg = do
490 name <- getProgName
492 name <- getProgName
491 UTF8.hPutStrLn stderr $ name ++ ": " ++ msg
493 UTF8.hPutStrLn stderr $ name ++ ": " ++ msg
494+
495+--
496+-- Safe read
497+--
498+
499+safeRead :: (Monad m, Read a) => String -> m a
500+safeRead s = case reads s of
501+ (d,[]):_ -> return d
502+ _ -> fail $ "Could not read `" ++ s ++ "'"