0

我想匹配带有扩展名*.md和目录*.texposts文件。

我不能使用的原因"posts/*" :: Pattern是因为帖子目录中有文件*.tex.metadata。并且site会在该文件上给出错误。

[ERROR] Hakyll.Web.readPandocWith: I don't know how to read a file of the type Binary for: posts/2017-06-02-tex.metadata

尝试以下代码并以空匹配失败(无 html 输出)。

match (fromList ["posts/*.md", "posts/*.tex"]) $ do
    route $ setExtension "html"
    compile $ pandocCompiler

let postFiles :: Pattern
    postFiles = fromGlob "posts/*.md" `mappend` fromGlob "posts/*.tex"

match postFiles $ do
    route $ setExtension "html"
    compile $ pandocCompiler

也许我应该使用fromRegex,但我不知道如何为此编写正则表达式。

非常欢迎添加学习资源。文档缺少样本。

4

1 回答 1

1

尝试

let postFiles :: Pattern
    postFiles = fromGlob "posts/*.md" .||. fromGlob "posts/*.tex"

match postFiles $ do
    route $ setExtension "html"
    compile $ pandocCompiler

您可以从文档中阅读“组合模式” ,组合多个Pattern值 有哪些不同的功能。

pattern1 .||. pattern2创建一个模式,如果匹配pattern1pattern2两者都匹配(这就是你想要的)。

pattern1 .&&. pattern2创建一个匹配 ifpattern1pattern2match 的模式(你不希望这样,但它也说明了可以做什么)。

于 2017-06-02T09:43:53.060 回答