Próbuję użyć pandoc
(z hakyll
, ale prawdopodobnie nie jest to ważne) do osiągnięcia następujących celów:Brakujące atrybuty linków i innych rodzajów elementów pandoc
- odczytać plik markdown.
- Konwersja do HTML.
- Dodaj atrybut
target="_blank"
do każdego linku, który jest automatycznie tworzony.
Problemem jest to, że definition of Inline
w pandoc
wydają się potwierdzać atrybuty tylko dla niektórych rodzajów Inline
s, na przykład dla Span
i Code
, a nie do innych, na przykład, na Link
i Image
.
Czy to jest arbitralne ograniczenie pandoc
, czy też zostało zrobione celowo z jakiegoś powodu, którego nie rozumiem? Co więcej, czy istnieje sposób na osiągnięcie tego, co chcę, bez uciekania się do przetwarzania ciągów niskopoziomowych lub korzystania z konstruktora RawInline
?
Oto 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