我想在*.md
目录中匹配扩展名为*.tex
和posts
的文件。
我无法使用"posts/*" :: Pattern
的原因是因为posts目录中有文件*.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缺少样本。
答案 0 :(得分:1)
尝试
let postFiles :: Pattern
postFiles = fromGlob "posts/*.md" .||. fromGlob "posts/*.tex"
match postFiles $ do
route $ setExtension "html"
compile $ pandocCompiler
您可以阅读documentation中的“撰写模式”
有哪些不同的函数可以组成多个Pattern
值。
pattern1 .||. pattern2
创建一个模式,匹配pattern1
或pattern2
或两者匹配(这是您想要的)。
pattern1 .&&. pattern2
和pattern1
匹配,则 pattern2
会创建匹配的模式(您不希望这样,但它也说明了可以执行的操作)。