2015-04-26 36 views
11

元素的缺少的属性我想使用pandoc(与hakyll,但是这可能并不重要),以实现以下目标:链接和其他类型的pandoc

  1. 阅读降价文件。
  2. 将其转换为HTML。
  3. 为每个自动生成的链接添加一个target="_blank"属性。

的问题是,在pandocdefinition of Inline似乎支持的属性只对某些类型的Inline S,例如,对于SpanCode,而不是为别人,例如,为LinkImage

这是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 

回答

1

图像和链接属性被记录为 '在Pandoc不是' Pandoc vs Multimarkdown Wiki页面上的功能。

围绕此问题还有一些未解决的问题,如Permit adding attributes to all Markdown elements #684。当我看时,我没有看到附加的代码/拉取请求来实现它们。

如果您想为自动生成的链接添加target="_blank"属性,我认为您需要在此期间使用解决方法。 (并且请注意,如果使用非Pandoc HTML解析器后处理HTML,则可能不需要使用原始字符串处理。)