2017-06-02 55 views
0

我想匹配posts目录中扩展名为*.md*.tex的文件。如何结合多个模式进行匹配?

我不能使用"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,但我不知道如何编写正则表达式这一点。

加入学习资源非常受欢迎。 documentation缺少样本。

回答

1

尝试

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

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

你可以从documentation 读“编制模式”有什么不同的功能有组成多个Pattern值。

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

pattern1 .&&. pattern2创建匹配的模式,如果pattern1pattern2匹配(您不想要这个,但它也说明了可以做什么)。