@@ -24,7 +24,7 @@ import Data.List (intersperse)
24
24
import qualified Data.Text as T
25
25
import qualified Data.Map as M
26
26
import Text.Pandoc.Writers.Shared ( metaToContext , defField , toLegacyTable )
27
- import Text.Pandoc.Shared (isTightList , tshow )
27
+ import Text.Pandoc.Shared (isTightList , tshow , stringify )
28
28
import Text.DocLayout
29
29
import Text.DocTemplates (renderTemplate )
30
30
import Control.Monad.State
@@ -196,18 +196,30 @@ inlineToDjot (RawInline (Format f) t) =
196
196
inlineToDjot (Link attr ils (src,tit)) = do
197
197
opts <- gets options
198
198
description <- inlinesToDjot ils
199
+ let ilstring = stringify ils
200
+ let autolink = ilstring == src
201
+ let email = (" mailto:" <> ilstring) == src
202
+ let removeClass name (ident, cls, kvs) = (ident, filter (/= name) cls, kvs)
199
203
let attr' = D. Attr [(" title" , fromText tit) | not (T. null tit)] <>
200
- toDjotAttr attr
201
- if writerReferenceLinks opts
202
- then do
203
- refs@ (D. ReferenceMap m) <- gets references
204
- let refnum = M. size m + 1
205
- let lab = fromText $ tshow refnum
206
- modify $ \ st -> st{ references =
207
- D. insertReference lab
208
- (fromText src, attr') refs }
209
- pure $ D. addAttr attr' $ D. link description (D. Reference lab)
210
- else pure $ D. addAttr attr' $ D. link description (D. Direct (fromText src))
204
+ toDjotAttr ( (if autolink
205
+ then removeClass " uri"
206
+ else id ) .
207
+ (if email
208
+ then removeClass " email"
209
+ else id ) $ attr)
210
+ case () of
211
+ _ | autolink -> pure $ D. addAttr attr' $ D. urlLink (fromText ilstring)
212
+ | email -> pure $ D. addAttr attr' $ D. emailLink (fromText ilstring)
213
+ | writerReferenceLinks opts
214
+ -> do refs@ (D. ReferenceMap m) <- gets references
215
+ let refnum = M. size m + 1
216
+ let lab = fromText $ tshow refnum
217
+ modify $ \ st -> st{ references =
218
+ D. insertReference lab
219
+ (fromText src, attr') refs }
220
+ pure $ D. addAttr attr' $ D. link description (D. Reference lab)
221
+ | otherwise
222
+ -> pure $ D. addAttr attr' $ D. link description (D. Direct (fromText src))
211
223
inlineToDjot (Image attr ils (src,tit)) = do
212
224
opts <- gets options
213
225
description <- inlinesToDjot ils
@@ -226,7 +238,7 @@ inlineToDjot (Image attr ils (src,tit)) = do
226
238
inlineToDjot (Note bs) = do
227
239
notes@ (D. NoteMap m) <- gets footnotes
228
240
let notenum = M. size m + 1
229
- let lab = fromText $ " fn " <> tshow notenum
241
+ let lab = fromText $ tshow notenum
230
242
contents <- blocksToDjot bs
231
243
modify $ \ st -> st{ footnotes = D. insertNote lab contents notes }
232
244
pure $ D. footnoteReference lab
0 commit comments