From 1e0fa95620e740d82a157126053d7f1a4a64071e Mon Sep 17 00:00:00 2001 From: Arian van Putten Date: Sun, 4 Oct 2015 23:32:31 +0200 Subject: [PATCH] Make charset lookups more efficient --- servant-js/src/Servant/JS/Internal.hs | 28 +++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/servant-js/src/Servant/JS/Internal.hs b/servant-js/src/Servant/JS/Internal.hs index 2c7f84e7..c53124f7 100644 --- a/servant-js/src/Servant/JS/Internal.hs +++ b/servant-js/src/Servant/JS/Internal.hs @@ -96,20 +96,24 @@ toValidFunctionName t = Nothing -> "_" where setFirstChar c = if firstChar c then c else '_' - firstChar c = prefixOK c || any (Set.member c) firstLetterOK - remainder c = prefixOK c || any (Set.member c) remainderOK + firstChar c = prefixOK c || Set.member c firstLetterOK + remainder c = prefixOK c || Set.member c remainderOK prefixOK c = c `elem` ['$','_'] - firstLetterOK = [ Set.lowercaseLetter - , Set.uppercaseLetter - , Set.titlecaseLetter - , Set.modifierLetter - , Set.otherLetter - , Set.letterNumber ] + firstLetterOK = mconcat + [ Set.lowercaseLetter + , Set.uppercaseLetter + , Set.titlecaseLetter + , Set.modifierLetter + , Set.otherLetter + , Set.letterNumber + ] remainderOK = firstLetterOK - <> [ Set.nonSpacingMark - , Set.spacingCombiningMark - , Set.decimalNumber - , Set.connectorPunctuation ] + <> mconcat + [ Set.nonSpacingMark + , Set.spacingCombiningMark + , Set.decimalNumber + , Set.connectorPunctuation + ] toJSHeader :: HeaderArg -> Text toJSHeader (HeaderArg n) = toValidFunctionName ("header" <> n)