Я пытаюсь использовать pandoc
(с hakyll
, но это, вероятно, не важно) для достижения следующего:
- Прочитайте файл отметки.
- Преобразуйте его в HTML.
- Добавьте атрибут
target="_blank"
к каждой автоматически создаваемой ссылке.
Проблема заключается в том, что определение Inline
в pandoc
похоже, поддерживает атрибуты только для некоторых типов Inline
s, например, для Span
и Code
, а не для других, например, для Link
и Image
.
Является ли это произвольным ограничением pandoc
, или это было сделано по какой-то причине, что я не понимаю? Кроме того, есть ли способ достичь того, что я хочу, не прибегая к низкоуровневой обработке строк или к использованию конструктора RawInline
?
Вот MWE:
import Text.Pandoc
import Text.Pandoc.Walk
fixLinks :: Pandoc -> Pandoc
fixLinks = walk fixLink
where fixLink (Link inlines (url, title)) =
Link inlines (url, "I want to add a target=_blank to this link!")
fixLink inline = inline
main = do
let md = "This is a link to [StackOverflow](http://stackoverflow.com/)."
(putStrLn . writeHtmlString def . fixLinks . readMarkdown def) md