git.iko.soy/typeable/pandoc
on master help sign in
DocBook reader: Handle numerical attributes starting with decimal.
416dad8John MacFarlane
src/Text/Pandoc/Readers/DocBook.hs+7−6
@@ -1,5 +1,6 @@
1module Text.Pandoc.Readers.DocBook ( readDocBook ) where
1module Text.Pandoc.Readers.DocBook ( readDocBook ) where
2−import Data.Char (toUpper, isDigit)
2+import Data.Char (toUpper)
3+import Text.Pandoc.Shared (safeRead)
3import Text.Pandoc.Options
4import Text.Pandoc.Options
4import Text.Pandoc.Definition
5import Text.Pandoc.Definition
5import Text.Pandoc.Builder
6import Text.Pandoc.Builder
@@ -682,10 +683,9 @@ parseBlock (Elem e) =
682 "lowerroman" -> LowerRoman
683 "lowerroman" -> LowerRoman
683 "upperroman" -> UpperRoman
684 "upperroman" -> UpperRoman
684 _ -> Decimal
685 _ -> Decimal
685− let start = case attrValue "override" <$>
686+ let start = maybe 1 id $
686− filterElement (named "listitem") e of
687+ (attrValue "override" <$> filterElement (named "listitem") e)
687− Just x@(_:_) | all isDigit x -> read x
688+ >>= safeRead
688− _ -> 1
689 orderedListWith (start,listStyle,DefaultDelim)
689 orderedListWith (start,listStyle,DefaultDelim)
690 <$> listitems
690 <$> listitems
691 "variablelist" -> definitionList <$> deflistitems
691 "variablelist" -> definitionList <$> deflistitems
@@ -801,7 +801,8 @@ parseBlock (Elem e) =
801 Just "center" -> AlignCenter
801 Just "center" -> AlignCenter
802 _ -> AlignDefault
802 _ -> AlignDefault
803 let toWidth c = case findAttr (unqual "colwidth") c of
803 let toWidth c = case findAttr (unqual "colwidth") c of
804+ Just w -> maybe 0 id
804− Just w -> read $ filter (\x ->
805+ $ safeRead $ '0': filter (\x ->
805 (x >= '0' && x <= '9')
806 (x >= '0' && x <= '9')
806 || x == '.') w
807 || x == '.') w
807 Nothing -> 0 :: Double
808 Nothing -> 0 :: Double