aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2018-08-10 15:56:43 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2018-08-10 15:56:43 -0700
commit65aea82a04f6147a5ab952b88f7f16b528bc9c50 (patch)
tree9b10b99521d2a72247d78f3b53667016eb9c6bf7 /src/Text/Pandoc
parent6003c596d7b348b29dd4f452f504bfd717634fa2 (diff)
downloadpandoc-65aea82a04f6147a5ab952b88f7f16b528bc9c50.tar.gz
Avoid non-exhaustive pattern match.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r--src/Text/Pandoc/Parsing.hs16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs
index 79022d6f1..cab18b645 100644
--- a/src/Text/Pandoc/Parsing.hs
+++ b/src/Text/Pandoc/Parsing.hs
@@ -514,22 +514,16 @@ charsInBalanced open close parser = try $ do
-- Auxiliary functions for romanNumeral:
-lowercaseRomanDigits :: [Char]
-lowercaseRomanDigits = ['i','v','x','l','c','d','m']
-
-uppercaseRomanDigits :: [Char]
-uppercaseRomanDigits = map toUpper lowercaseRomanDigits
-
-- | Parses a roman numeral (uppercase or lowercase), returns number.
romanNumeral :: Stream s m Char => Bool -- ^ Uppercase if true
-> ParserT s st m Int
romanNumeral upperCase = do
- let romanDigits = if upperCase
- then uppercaseRomanDigits
- else lowercaseRomanDigits
- lookAhead $ oneOf romanDigits
let [one, five, ten, fifty, hundred, fivehundred, thousand] =
- map char romanDigits
+ map char $
+ if upperCase
+ then ['I','V','X','L','C','D','M']
+ else ['i','v','x','l','c','d','m']
+ lookAhead $ choice [one, five, ten, fifty, hundred, fivehundred, thousand]
thousands <- ((1000 *) . length) <$> many thousand
ninehundreds <- option 0 $ try $ hundred >> thousand >> return 900
fivehundreds <- option 0 $ 500 <$ fivehundred