semdoc-0.1.0: src/Text/Semdoc/Util.hs
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)