on master help sign in
Merge pull request #129 from simukis/check-whitelist
571ab4bJasper Van der Jeugt
src/Hakyll/Check.hs+12−4
@@ -137,15 +137,23 @@ checkFile filePath = do
137--------------------------------------------------------------------------------
137--------------------------------------------------------------------------------
138checkUrl :: FilePath -> String -> Checker ()
138checkUrl :: FilePath -> String -> Checker ()
139checkUrl filePath url
139checkUrl filePath url
140− | isExternal url = checkExternalUrl url
140+ | isExternal url = checkExternalUrl url
141− | "mailto:" `isPrefixOf` url = ok url
141+ | hasProtocol url = skip "Unknown protocol, skipping"
142− | otherwise = checkInternalUrl filePath url
142+ | otherwise = checkInternalUrl filePath url
143−
143+ where
144+ hasProtocol = all (`elem` validProtoChars) . takeWhile (/= ':')
145+ validProtoChars = ['A'..'Z'] ++ ['a'..'z'] ++ ['0'..'9'] ++ "+-."
144
146
145--------------------------------------------------------------------------------
147--------------------------------------------------------------------------------
146ok :: String -> Checker ()
148ok :: String -> Checker ()
147ok _ = tell $ mempty {checkerOk = 1}
149ok _ = tell $ mempty {checkerOk = 1}
148
150
151+--------------------------------------------------------------------------------
152+skip :: String -> Checker ()
153+skip reason = do
154+ logger <- checkerLogger <$> ask
155+ Logger.debug logger $ reason
156+ tell $ mempty {checkerOk = 1}
149
157
150--------------------------------------------------------------------------------
158--------------------------------------------------------------------------------
151faulty :: String -> Checker ()
159faulty :: String -> Checker ()