-
Notifications
You must be signed in to change notification settings - Fork 61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Support mark
(highlight) extension
#67
Conversation
The extension is disabled by default. When enabled, `==marked==` is expanded to a span with class "mark", for parity with upcoming Pandoc, and also Djot's `{=marked=}`.
Thanks for the implementation, seems straightforward. Will be porting this to witiko/markdown in Witiko#303, so I am leaving this open in case I discover some edge cases that would best be fixed.
Only |
Sorry if it sounded name-dropping, it wasn't my intention 🐱 |
<<< | ||
Some ==highlighted text==. | ||
>>> | ||
<p>Some <span class="mark">highlighted text</span>.</p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In HTML5, there is a <mark>
element. The HTML5 writer should likely produce <mark>
rather than <span class="mark">
. No need to test that, but we should likely add a new function mark()
to writers rather than reuse the span()
function even if the output will still be <span class="mark">
in the HTML writer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Last time I checked, Pandoc just expands a span here, so I went for the simplest choice.
Of course we can possibly support outputting a <mark>
in the HTML5 writer - either as suggested with a mark() function in writers, or possibly in the HTML5 writer itself, interpretating that span (avoiding yet another writer method for so small a thing).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My distro didn't have a recent enough Pandoc for me to check, but Pandoc tests suggest that Pandoc also produces the <mark>
element. Regardless, it seems clear to me that we should produce semantic HTML5 markup like <mark>
whenever possible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not part of the Pandoc AST https://hackage.haskell.org/package/pandoc-types-1.23/docs/Text-Pandoc-Definition.html#t:Inline
And indeed ==mark==
processed with -f markdown+mark -t json
gives
{"pandoc-api-version":[1,23,1],"meta":{},"blocks":[{"t":"Para","c":[{"t":"Span","c":[["",["mark"],[]],[{"t":"Str","c":"mark"}]]}]}]}
If I correctly read the code, the Pandoc Markdown reader indeed uses a span here:
https://github.com/jgm/pandoc/blob/edbea270f5ed0cae23cfe977b9621045256e7dfc/src/Text/Pandoc/Readers/Markdown.hs#L1726
Wondering where it does the mapping then! But it might thus likely be somewhere in Writers?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regardless, done in 96c05c8
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wondering where it does the mapping then! But it might thus likely be somewhere in Writers?
Seems that way. I was able to pinpoint a number of writers, which produce special output for spans with the mark
class name:
- https://github.com/jgm/pandoc/blob/2c6f22d2b4edd9fb8b8576995d7aece99feef207/src/Text/Pandoc/Writers/LaTeX.hs#L765
- https://github.com/jgm/pandoc/blob/2c6f22d2b4edd9fb8b8576995d7aece99feef207/src/Text/Pandoc/Writers/Docx.hs#L1193
- https://github.com/jgm/pandoc/blob/2c6f22d2b4edd9fb8b8576995d7aece99feef207/src/Text/Pandoc/Writers/OpenDocument.hs#L611
- https://github.com/jgm/pandoc/blob/2c6f22d2b4edd9fb8b8576995d7aece99feef207/src/Text/Pandoc/Writers/RST.hs#L755
- https://github.com/jgm/pandoc/blob/2c6f22d2b4edd9fb8b8576995d7aece99feef207/src/Text/Pandoc/Writers/Markdown/Inline.hs#L351
I wasn't able to pinpoint where the HTML writer does it.
The extension is disabled by default.
When enabled,
==marked==
is expanded to a span with class "mark", for parity with upcoming Pandoc, and also Djot's{=marked=}
.Closes #65