@@ -1,5 +1,6 @@
11module Text.Pandoc.Readers.DocBook ( readDocBook ) where
2−import Data.Char (toUpper, isDigit)
2+import Data.Char (toUpper)
3+import Text.Pandoc.Shared (safeRead)
34import Text.Pandoc.Options
45import Text.Pandoc.Definition
56import Text.Pandoc.Builder
@@ -682,10 +683,9 @@ parseBlock (Elem e) =
682683 "lowerroman" -> LowerRoman
683684 "upperroman" -> UpperRoman
684685 _ -> Decimal
685− let start = case attrValue "override" <$>
686− filterElement (named "listitem") e of
687− Just x@(_:_) | all isDigit x -> read x
688− _ -> 1
686+ let start = maybe 1 id $
687+ (attrValue "override" <$> filterElement (named "listitem") e)
688+ >>= safeRead
689689 orderedListWith (start,listStyle,DefaultDelim)
690690 <$> listitems
691691 "variablelist" -> definitionList <$> deflistitems
@@ -801,7 +801,8 @@ parseBlock (Elem e) =
801801 Just "center" -> AlignCenter
802802 _ -> AlignDefault
803803 let toWidth c = case findAttr (unqual "colwidth") c of
804− Just w -> read $ filter (\x ->
804+ Just w -> maybe 0 id
805+ $ safeRead $ '0': filter (\x ->
805806 (x >= '0' && x <= '9')
806807 || x == '.') w
807808 Nothing -> 0 :: Double