git.iko.soy/typeable/pandoc
on master help sign in
Move `citeKey` from Readers.Markdown to Parsing

The function can be used by other readers, so it is made accessible for all parsers.

commit2423f9e6b180bc6b04d222a4b574de995d296f80 authorAlbert Krewinkel <tarleb@moltkeplatz.de> dateWed 14 May 2014, 14:58 (12 years ago) parent9df589b
2 files changed+13−14
src/Text/Pandoc/Parsing.hs+13 src/Text/Pandoc/Readers/Markdown.hs−14
src/Text/Pandoc/Parsing.hs+13
@@ -94,6 +94,7 @@ module Text.Pandoc.Parsing ( (>>~),
9494 apostrophe,
9595 dash,
9696 nested,
97+ citeKey,
9798 macro,
9899 applyMacros',
99100 Parser,
@@ -1144,6 +1145,18 @@ nested p = do
11441145 updateState $ \st -> st{ stateMaxNestingLevel = nestlevel }
11451146 return res
11461147
1148+citeKey :: HasLastStrPosition st => Parser [Char] st (Bool, String)
1149+citeKey = try $ do
1150+ guard =<< notAfterString
1151+ suppress_author <- option False (char '-' *> return True)
1152+ char '@'
1153+ firstChar <- letter <|> char '_'
1154+ let regchar = satisfy (\c -> isAlphaNum c || c == '_')
1155+ let internal p = try $ p <* lookAhead regchar
1156+ rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/")
1157+ let key = firstChar:rest
1158+ return (suppress_author, key)
1159+
11471160--
11481161-- Macros
11491162--
src/Text/Pandoc/Readers/Markdown.hs−14
@@ -1814,20 +1814,6 @@ normalCite = try $ do
18141814 char ']'
18151815 return citations
18161816
1817−citeKey :: MarkdownParser (Bool, String)
1818−citeKey = try $ do
1819− -- make sure we're not right after an alphanumeric,
1820− -- since foo@bar.baz is probably an email address
1821− guard =<< notAfterString
1822− suppress_author <- option False (char '-' >> return True)
1823− char '@'
1824− first <- letter <|> char '_'
1825− let regchar = satisfy (\c -> isAlphaNum c || c == '_')
1826− let internal p = try $ p >>~ lookAhead regchar
1827− rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/")
1828− let key = first:rest
1829− return (suppress_author, key)
1830−
18311817suffix :: MarkdownParser (F Inlines)
18321818suffix = try $ do
18331819 hasSpace <- option False (notFollowedBy nonspaceChar >> return True)