diff options
| author | Albert Krewinkel <tarleb@moltkeplatz.de> | 2014-05-14 14:58:05 +0200 | 
|---|---|---|
| committer | Albert Krewinkel <tarleb@moltkeplatz.de> | 2014-05-14 14:58:05 +0200 | 
| commit | 2423f9e6b180bc6b04d222a4b574de995d296f80 (patch) | |
| tree | 101f94fe9901185a7a45b47c135ec4522c5b7c41 /src/Text/Pandoc | |
| parent | 9df589b9c5a4f2dcb19445239dfae41b54625330 (diff) | |
| download | pandoc-2423f9e6b180bc6b04d222a4b574de995d296f80.tar.gz | |
Move `citeKey` from Readers.Markdown to Parsing
The function can be used by other readers, so it is made accessible for
all parsers.
Diffstat (limited to 'src/Text/Pandoc')
| -rw-r--r-- | src/Text/Pandoc/Parsing.hs | 13 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 14 | 
2 files changed, 13 insertions, 14 deletions
diff --git a/src/Text/Pandoc/Parsing.hs b/src/Text/Pandoc/Parsing.hs index 344f6c7ba..4cd6591c0 100644 --- a/src/Text/Pandoc/Parsing.hs +++ b/src/Text/Pandoc/Parsing.hs @@ -94,6 +94,7 @@ module Text.Pandoc.Parsing ( (>>~),                               apostrophe,                               dash,                               nested, +                             citeKey,                               macro,                               applyMacros',                               Parser, @@ -1144,6 +1145,18 @@ nested p = do    updateState $ \st -> st{ stateMaxNestingLevel = nestlevel }    return res +citeKey :: HasLastStrPosition st => Parser [Char] st (Bool, String) +citeKey = try $ do +  guard =<< notAfterString +  suppress_author <- option False (char '-' *> return True) +  char '@' +  firstChar <- letter <|> char '_' +  let regchar = satisfy (\c -> isAlphaNum c || c == '_') +  let internal p = try $ p <* lookAhead regchar +  rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/") +  let key = firstChar:rest +  return (suppress_author, key) +  --  -- Macros  -- diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 1ac98e94c..5129bc2e3 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1814,20 +1814,6 @@ normalCite = try $ do    char ']'    return citations -citeKey :: MarkdownParser (Bool, String) -citeKey = try $ do -  -- make sure we're not right after an alphanumeric, -  -- since foo@bar.baz is probably an email address -  guard =<< notAfterString -  suppress_author <- option False (char '-' >> return True) -  char '@' -  first <- letter <|> char '_' -  let regchar = satisfy (\c -> isAlphaNum c || c == '_') -  let internal p = try $ p >>~ lookAhead regchar -  rest <- many $ regchar <|> internal (oneOf ":.#$%&-+?<>~/") -  let key = first:rest -  return (suppress_author, key) -  suffix :: MarkdownParser (F Inlines)  suffix = try $ do    hasSpace <- option False (notFollowedBy nonspaceChar >> return True)  | 
