neuron-0.4.0.0: src/app/Text/MMark/Extension/ReplaceLink.hs
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Text.MMark.Extension.ReplaceLink
( replaceLink,
)
where
import Lucid
import Relude
import Relude.Extra.Map
import Text.MMark.Extension (Extension)
import qualified Text.MMark.Extension as Ext
import Text.MMark.MarkdownLink
-- | MMark extension to replace links with some HTML.
replaceLink :: Map MarkdownLink (Html ()) -> Extension
replaceLink linkMap =
Ext.inlineRender $ \f -> \case
inline@(Ext.Link inner uri _title) ->
MarkdownLink (Ext.asPlainText inner) uri
& flip lookup linkMap
& fromMaybe (f inline)
inline ->
f inline