2017-06-02 50 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匹配(您不想要這個,但它也說明了可以做什麼)。