on master help sign in
Merge pull request #129 from simukis/check-whitelist

Properly implement protocol skipping in checker

commit571ab4b8f77997340a3d18fca3eaf7d4b79da83b authorJasper Van der Jeugt <jaspervdj@gmail.com> dateMon 1 Apr 2013, 08:28 (14 years ago) parentbf496c2128f10d
1 file changed+12−4
src/Hakyll/Check.hs+12−4
src/Hakyll/Check.hs+12−4
@@ -137,15 +137,23 @@ checkFile filePath = do
137137--------------------------------------------------------------------------------
138138checkUrl :: FilePath -> String -> Checker ()
139139checkUrl filePath url
140− | isExternal url = checkExternalUrl url
141− | "mailto:" `isPrefixOf` url = ok url
142− | otherwise = checkInternalUrl filePath url
143−
140+ | isExternal url = checkExternalUrl url
141+ | hasProtocol url = skip "Unknown protocol, skipping"
142+ | otherwise = checkInternalUrl filePath url
143+ where
144+ hasProtocol = all (`elem` validProtoChars) . takeWhile (/= ':')
145+ validProtoChars = ['A'..'Z'] ++ ['a'..'z'] ++ ['0'..'9'] ++ "+-."
144146
145147--------------------------------------------------------------------------------
146148ok :: String -> Checker ()
147149ok _ = tell $ mempty {checkerOk = 1}
148150
151+--------------------------------------------------------------------------------
152+skip :: String -> Checker ()
153+skip reason = do
154+ logger <- checkerLogger <$> ask
155+ Logger.debug logger $ reason
156+ tell $ mempty {checkerOk = 1}
149157
150158--------------------------------------------------------------------------------
151159faulty :: String -> Checker ()