如何组合多个模式进行匹配?
How to combine multiple Pattern for match?
我想在 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 缺少样本。
尝试
let postFiles :: Pattern
postFiles = fromGlob "posts/*.md" .||. fromGlob "posts/*.tex"
match postFiles $ do
route $ setExtension "html"
compile $ pandocCompiler
您可以从 documentation 阅读 "Composing patterns"
有哪些不同的函数可以组成多个 Pattern
值。
pattern1 .||. pattern2
创建一个模式,如果 pattern1
或 pattern2
或两者匹配(这就是您想要的)。
pattern1 .&&. pattern2
创建一个匹配的模式,如果 pattern1
和 pattern2
匹配(你不想要这个,但它也说明了可以做什么)。
我想在 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 缺少样本。
尝试
let postFiles :: Pattern
postFiles = fromGlob "posts/*.md" .||. fromGlob "posts/*.tex"
match postFiles $ do
route $ setExtension "html"
compile $ pandocCompiler
您可以从 documentation 阅读 "Composing patterns"
有哪些不同的函数可以组成多个 Pattern
值。
pattern1 .||. pattern2
创建一个模式,如果 pattern1
或 pattern2
或两者匹配(这就是您想要的)。
pattern1 .&&. pattern2
创建一个匹配的模式,如果 pattern1
和 pattern2
匹配(你不想要这个,但它也说明了可以做什么)。