Skip to content

Commit bd2c7e5

Browse files
committed
Add some djot writer tests.
Also tweak djot writer url and email.
1 parent ecc2c71 commit bd2c7e5

File tree

7 files changed

+2574
-13
lines changed

7 files changed

+2574
-13
lines changed

pandoc.cabal

+3
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ extra-source-files:
271271
test/media/rId27.jpg
272272
test/typst-reader.typ
273273
test/undergradmath.typ
274+
test/djot-reader.latex
274275
test/latex-reader.latex
275276
test/textile-reader.textile
276277
test/markdown-reader-more.txt
@@ -293,6 +294,7 @@ extra-source-files:
293294
test/tables.jats_articleauthoring
294295
test/tables.jats_publishing
295296
test/tables.jira
297+
test/tables.djot
296298
test/tables.dokuwiki
297299
test/tables.zimwiki
298300
test/tables.icml
@@ -329,6 +331,7 @@ extra-source-files:
329331
test/testsuite.txt
330332
test/writer.latex
331333
test/writer.context
334+
test/writer.djot
332335
test/writer.docbook4
333336
test/writer.docbook5
334337
test/writer.jats_archiving

src/Text/Pandoc/Writers/Djot.hs

+25-13
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Data.List (intersperse)
2424
import qualified Data.Text as T
2525
import qualified Data.Map as M
2626
import Text.Pandoc.Writers.Shared ( metaToContext, defField, toLegacyTable )
27-
import Text.Pandoc.Shared (isTightList, tshow )
27+
import Text.Pandoc.Shared (isTightList, tshow, stringify)
2828
import Text.DocLayout
2929
import Text.DocTemplates (renderTemplate)
3030
import Control.Monad.State
@@ -196,18 +196,30 @@ inlineToDjot (RawInline (Format f) t) =
196196
inlineToDjot (Link attr ils (src,tit)) = do
197197
opts <- gets options
198198
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)
199203
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))
211223
inlineToDjot (Image attr ils (src,tit)) = do
212224
opts <- gets options
213225
description <- inlinesToDjot ils
@@ -226,7 +238,7 @@ inlineToDjot (Image attr ils (src,tit)) = do
226238
inlineToDjot (Note bs) = do
227239
notes@(D.NoteMap m) <- gets footnotes
228240
let notenum = M.size m + 1
229-
let lab = fromText $ "fn" <> tshow notenum
241+
let lab = fromText $ tshow notenum
230242
contents <- blocksToDjot bs
231243
modify $ \st -> st{ footnotes = D.insertNote lab contents notes }
232244
pure $ D.footnoteReference lab

test/Tests/Old.hs

+5
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ tests pandocPath =
8383
, test' "reader" ["-r", "textile", "-w", "native", "-s"]
8484
"textile-reader.textile" "textile-reader.native"
8585
]
86+
, testGroup "djot"
87+
[ testGroup "writer" $ writerTests' "djot"
88+
, test' "reader" ["-f", "djot", "-t" ,"native", "-s"]
89+
"djot-reader.djot" "djot-reader.native"
90+
]
8691
, testGroup "docbook"
8792
[ testGroup "writer" $ writerTests' "docbook4"
8893
, test' "reader" ["-r", "docbook", "-w", "native", "-s"]

0 commit comments

Comments
 (0)