on master help sign in
Make charset lookups more efficient
1e0fa95Arian van Putten
servant-js/src/Servant/JS/Internal.hs+16−12
@@ -96,20 +96,24 @@ toValidFunctionName t =
96 Nothing -> "_"
96 Nothing -> "_"
97 where
97 where
98 setFirstChar c = if firstChar c then c else '_'
98 setFirstChar c = if firstChar c then c else '_'
99− firstChar c = prefixOK c || any (Set.member c) firstLetterOK
99+ firstChar c = prefixOK c || Set.member c firstLetterOK
100− remainder c = prefixOK c || any (Set.member c) remainderOK
100+ remainder c = prefixOK c || Set.member c remainderOK
101 prefixOK c = c `elem` ['$','_']
101 prefixOK c = c `elem` ['$','_']
102+ firstLetterOK = mconcat
102− firstLetterOK = [ Set.lowercaseLetter
103+ [ Set.lowercaseLetter
103− , Set.uppercaseLetter
104+ , Set.uppercaseLetter
104− , Set.titlecaseLetter
105+ , Set.titlecaseLetter
105− , Set.modifierLetter
106+ , Set.modifierLetter
106− , Set.otherLetter
107+ , Set.otherLetter
107− , Set.letterNumber ]
108+ , Set.letterNumber
109+ ]
108 remainderOK = firstLetterOK
110 remainderOK = firstLetterOK
111+ <> mconcat
109− <> [ Set.nonSpacingMark
112+ [ Set.nonSpacingMark
110− , Set.spacingCombiningMark
113+ , Set.spacingCombiningMark
111− , Set.decimalNumber
114+ , Set.decimalNumber
112− , Set.connectorPunctuation ]
115+ , Set.connectorPunctuation
116+ ]
113
117
114toJSHeader :: HeaderArg -> Text
118toJSHeader :: HeaderArg -> Text
115toJSHeader (HeaderArg n) = toValidFunctionName ("header" <> n)
119toJSHeader (HeaderArg n) = toValidFunctionName ("header" <> n)