@@ -26,6 +26,8 @@ import qualified Data.Text as T
27#if MIN_VERSION_base(4,8,0)
27#if MIN_VERSION_base(4,8,0)
28import Prelude hiding (Word)
28import Prelude hiding (Word)
31-- | Parse a CamelCase string.
33-- | Parse a CamelCase string.
@@ -38,21 +40,23 @@ import Prelude hiding (Word)
39-- unexpected '_'
41-- unexpected '_'
40-- expecting end of input, lowercase letter, or uppercase letter
42-- expecting end of input, lowercase letter, or uppercase letter
41−parseCamelCase
43+parseCamelCase :: (Foldable f, Functor f)
42− :: [Word 'Acronym] -- ^ Collection of acronyms
44+ => f (Word 'Acronym) -- ^ Collection of acronyms
43 -> Text -- ^ Input
45 -> Text -- ^ Input
44 -> Either (ParseError Char Dec) [SomeWord] -- ^ Result of parsing
46 -> Either (ParseError Char Dec) [SomeWord] -- ^ Result of parsing
45parseCamelCase acronyms = parse (parser acronyms) ""
47parseCamelCase acronyms = parse (parser acronyms) ""
47−parser
49+parser :: (Foldable f, Functor f)
48− :: [Word 'Acronym] -- ^ Collection of acronyms
50+ => f (Word 'Acronym) -- ^ Collection of acronyms
49 -> Parser [SomeWord] -- ^ CamelCase parser
51 -> Parser [SomeWord] -- ^ CamelCase parser
50parser acronyms = many (a <|> n) <* eof
52parser acronyms = many (a <|> n) <* eof
52 n = SomeWord <$> word
54 n = SomeWord <$> word
53 a = SomeWord <$> acronym acronyms
55 a = SomeWord <$> acronym acronyms
57+acronym :: (Foldable f, Functor f)
55−acronym :: [Word 'Acronym] -> Parser (Word 'Acronym)
59+ -> Parser (Word 'Acronym)
56acronym acronyms = do
60acronym acronyms = do
57 x <- T.pack <$> choice (string . T.unpack . unWord <$> acronyms)
61 x <- T.pack <$> choice (string . T.unpack . unWord <$> acronyms)
58 case mkAcronym x of
62 case mkAcronym x of