@@ -44,7 +44,7 @@ import Data.Text (Text, unpack)
4444import Text.Pandoc.Asciify (toAsciiChar)
4545import Text.Pandoc.Class (PandocMonad)
4646import Text.Pandoc.Definition
47−import Text.Pandoc.Emoji (emojis)
47+import Text.Pandoc.Emoji (emojiToInline)
4848import Text.Pandoc.Options
4949import Text.Pandoc.Shared (stringify)
5050import Text.Pandoc.Walk (walkM)
@@ -61,16 +61,19 @@ readCommonMark opts s = return $
6161 [ extTable | isEnabled Ext_pipe_tables opts ] ++
6262 [ extAutolink | isEnabled Ext_autolink_bare_uris opts ]
6363
64−convertEmojis :: String -> String
65−convertEmojis (':':xs) =
64+convertEmojis :: String -> [Inline]
65+convertEmojis s@(':':xs) =
6666 case break (==':') xs of
6767 (ys,':':zs) ->
68− case Map.lookup ys emojis of
69− Just s -> s ++ convertEmojis zs
70− Nothing -> ':' : ys ++ convertEmojis (':':zs)
71− _ -> ':':xs
72−convertEmojis (x:xs) = x : convertEmojis xs
73−convertEmojis [] = []
68+ case emojiToInline ys of
69+ Just em -> em : convertEmojis zs
70+ Nothing -> Str (':' : ys) : convertEmojis (':':zs)
71+ _ -> [Str s]
72+convertEmojis s =
73+ case break (==':') s of
74+ ("","") -> []
75+ (_,"") -> [Str s]
76+ (xs,ys) -> Str xs:convertEmojis ys
7477
7578addHeaderIdentifiers :: ReaderOptions -> Pandoc -> Pandoc
7679addHeaderIdentifiers opts doc = evalState (walkM (addHeaderId opts) doc) mempty
@@ -205,17 +208,17 @@ addInlines :: ReaderOptions -> [Node] -> [Inline]
205208addInlines opts = foldr (addInline opts) []
206209
207210addInline :: ReaderOptions -> Node -> [Inline] -> [Inline]
208−addInline opts (Node _ (TEXT t) _) = (map toinl clumps ++)
211+addInline opts (Node _ (TEXT t) _) = (foldr ((++) . toinl) [] clumps ++)
209212 where raw = unpack t
210213 clumps = groupBy samekind raw
211214 samekind ' ' ' ' = True
212215 samekind ' ' _ = False
213216 samekind _ ' ' = False
214217 samekind _ _ = True
215− toinl (' ':_) = Space
216− toinl xs = Str $ if isEnabled Ext_emoji opts
217− then convertEmojis xs
218− else xs
218+ toinl (' ':_) = [Space]
219+ toinl xs = if isEnabled Ext_emoji opts
220+ then convertEmojis xs
221+ else [Str xs]
219222addInline _ (Node _ LINEBREAK _) = (LineBreak :)
220223addInline opts (Node _ SOFTBREAK _)
221224 | isEnabled Ext_hard_line_breaks opts = (LineBreak :)