From a7f95db2a7a2ccb2a503a3dbf52bfc35e896e1b4 Mon Sep 17 00:00:00 2001 From: Ian Duncan Date: Wed, 16 Feb 2011 21:16:47 -0600 Subject: [PATCH] Fixed staticFiles to prepend an underscore to the generated function name if the filename starts with a digit and to change the first character of a filename's function to lowercase if it is uppercase. --- Yesod/Helpers/Static.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Yesod/Helpers/Static.hs b/Yesod/Helpers/Static.hs index ead0caf5..2bf08a2d 100644 --- a/Yesod/Helpers/Static.hs +++ b/Yesod/Helpers/Static.hs @@ -53,6 +53,7 @@ import Data.List (intercalate) import Language.Haskell.TH import Language.Haskell.TH.Syntax +import Data.Char import qualified Data.ByteString.Lazy as L import Data.Digest.Pure.MD5 import qualified Data.ByteString.Base64 @@ -155,7 +156,11 @@ staticFiles fp = do | '0' <= c && c <= '9' = c | otherwise = '_' go f = do - let name = mkName $ intercalate "_" $ map (map replace') f + let adjust [] = "" + adjust str@(x:xs) | isDigit x = '_' : x : xs + | isUpper x = toLower x : xs + | otherwise = str + let name = mkName $ intercalate "_" $ map (adjust . map replace') f f' <- lift f let sr = ConE $ mkName "StaticRoute" hash <- qRunIO $ fmap base64md5 $ L.readFile $ fp ++ '/' : intercalate "/" f