diff options
author | John MacFarlane <jgm@berkeley.edu> | 2015-11-13 12:06:39 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2015-11-13 12:14:24 -0800 |
commit | 0a6aaf5e1b60031b175ff81fa61f5059d63a75d8 (patch) | |
tree | 9351d16ec0705edd159d00add111db5c49d361f2 /src/Text/Pandoc/Readers | |
parent | d8080db7f7213b7afa8bd87952771dfe1d3f89ec (diff) | |
download | pandoc-0a6aaf5e1b60031b175ff81fa61f5059d63a75d8.tar.gz |
Added `emoji` extension to Markdown.
This is enabled by default in `markdown_github`.
Added `Ext_emoji` to `Extension` in `Text.Pandoc.Options` (API change).
Closes #2523.
Diffstat (limited to 'src/Text/Pandoc/Readers')
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index d73b92fbd..7e811a966 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -39,6 +39,7 @@ import Data.Ord ( comparing ) import Data.Char ( isSpace, isAlphaNum, toLower ) import Data.Maybe import Text.Pandoc.Definition +import Text.Pandoc.Emoji (emojis) import qualified Data.Text as T import Data.Text (Text) import qualified Data.Yaml as Yaml @@ -1467,6 +1468,7 @@ inline = choice [ whitespace , exampleRef , smart , return . B.singleton <$> charRef + , emoji , symbol , ltSign ] <?> "inline" @@ -1898,6 +1900,21 @@ rawHtmlInline = do else not . isTextTag return $ return $ B.rawInline "html" result +-- Emoji + +emojiChars :: [Char] +emojiChars = ['a'..'z'] ++ ['0'..'9'] ++ ['_','+','-'] + +emoji :: MarkdownParser (F Inlines) +emoji = try $ do + guardEnabled Ext_emoji + char ':' + emojikey <- many1 (oneOf emojiChars) + char ':' + case M.lookup emojikey emojis of + Just s -> return (return (B.str s)) + Nothing -> mzero + -- Citations cite :: MarkdownParser (F Inlines) |