module Text.Semdoc.Util where import qualified Data.Char as Char splitR :: (Char -> Bool) -> String -> [String] splitR _ [] = [] splitR p s = let go :: Char -> String -> [String] go m s' = case break p s' of (b', []) -> [m:b'] (b', x:xs) -> (m:b') : go x xs in case break p s of (b, []) -> [b] ([], h:t) -> go h t (b, h:t) -> b : go h t splitCamel :: String -> [String] splitCamel = splitR (\x -> Char.isUpper x || Char.isDigit x)