packages feed

character-cases 0.1.0.1 → 0.1.0.2

raw patch · 4 files changed

+86/−88 lines, 4 files

Files

character-cases.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 5614d4d110a1d3c8b6b1d2c616279aedf4fefc18a5bc46717901dc71da1e3306+-- hash: 8fb42b05c6e98302050fa2939fb2dc2521a5a515271a9a8597dddc2b8a88aa32  name:           character-cases-version:        0.1.0.1+version:        0.1.0.2 synopsis:       Exposes subspecies types of Char. And naming cases. description:    e.g. meaning of [a-z], [A-Z], [0-9], PascalCase, camelCase, and snake_case. Please see https://github.com/aiya000/hs-character-cases#README.md category:       Simple
src/Data/Char/Cases.hs view
@@ -290,40 +290,40 @@ -- | -- [a-zA-Z0-9_] ----- Please see 'Sneak'.-data SneakChar = SneakUnderscore -- ^ _-               | SneakAlphaNum AlphaNumChar -- ^ [a-zA-Z0-9]+-- Please see 'Snake'.+data SnakeChar = SnakeUnderscore -- ^ _+               | SnakeAlphaNum AlphaNumChar -- ^ [a-zA-Z0-9]   deriving (Show, Eq) -unSneakChar :: SneakChar -> Char-unSneakChar SneakUnderscore = '_'-unSneakChar (SneakAlphaNum x) = alphaNumToChar x+unSnakeChar :: SnakeChar -> Char+unSnakeChar SnakeUnderscore = '_'+unSnakeChar (SnakeAlphaNum x) = alphaNumToChar x -sneakChar :: CodeParsing m => m SneakChar-sneakChar =-  SneakUnderscore <$ P.char '_' <|>-  SneakAlphaNum <$> alphaNumChar+snakeChar :: CodeParsing m => m SnakeChar+snakeChar =+  SnakeUnderscore <$ P.char '_' <|>+  SnakeAlphaNum <$> alphaNumChar -charToSneak :: Char -> Maybe SneakChar-charToSneak x = P.parseMaybe sneakChar [x]+charToSnake :: Char -> Maybe SnakeChar+charToSnake x = P.parseMaybe snakeChar [x]  -- | -- Extracts a Char of [a-zA-Z0-9_]. -- Also throws compile error if non [a-zA-Z0-9_] is passed. ----- >>> [sneakCharQ|x|]--- SneakAlphaNum (AlphaNumAlpha (AlphaLower X_))+-- >>> [snakeCharQ|x|]+-- SnakeAlphaNum (AlphaNumAlpha (AlphaLower X_)) ----- >>> [sneakCharQ|X|]--- SneakAlphaNum (AlphaNumAlpha (AlphaUpper X))+-- >>> [snakeCharQ|X|]+-- SnakeAlphaNum (AlphaNumAlpha (AlphaUpper X)) ----- >>> [sneakCharQ|_|]--- SneakUnderscore+-- >>> [snakeCharQ|_|]+-- SnakeUnderscore ----- >>> [sneakCharQ|9|]--- SneakAlphaNum (AlphaNumDigit D9)-sneakCharQ :: QuasiQuoter-sneakCharQ = QuasiQuoter+-- >>> [snakeCharQ|9|]+-- SnakeAlphaNum (AlphaNumDigit D9)+snakeCharQ :: QuasiQuoter+snakeCharQ = QuasiQuoter   { quoteExp  = expQ   , quotePat  = error "not supported"   , quoteType = error "not supported"@@ -331,52 +331,52 @@   }   where     expQ :: String -> Q Exp-    expQ [] = fail "sneakCharQ required a Char, but nothign is specified."+    expQ [] = fail "snakeCharQ required a Char, but nothign is specified." -    expQ (x : []) = case charToSneak x of-      Nothing -> fail [i|'${x}' is not a SneakChar.|]-      Just SneakUnderscore ->-        conE $ mkName "SneakUnderscore"-      Just (SneakAlphaNum _) ->-        (ConE (mkName "SneakAlphaNum") `AppE`) <$> (quoteExp alphaNumCharQ) [x]+    expQ (x : []) = case charToSnake x of+      Nothing -> fail [i|'${x}' is not a SnakeChar.|]+      Just SnakeUnderscore ->+        conE $ mkName "SnakeUnderscore"+      Just (SnakeAlphaNum _) ->+        (ConE (mkName "SnakeAlphaNum") `AppE`) <$> (quoteExp alphaNumCharQ) [x] -    expQ xs@(_ : _) = fail [i|sneakCharQ required a Char, but a String is specified: ${xs}|]+    expQ xs@(_ : _) = fail [i|snakeCharQ required a Char, but a String is specified: ${xs}|]   -- | -- [a-zA-Z_] ----- Please see 'Sneak'.-data SneakHeadChar = SneakHeadUnderscore-                   | SneakHeadAlpha AlphaChar+-- Please see 'Snake'.+data SnakeHeadChar = SnakeHeadUnderscore+                   | SnakeHeadAlpha AlphaChar   deriving (Show, Eq) -unSneakHeadChar :: SneakHeadChar -> Char-unSneakHeadChar SneakHeadUnderscore = '_'-unSneakHeadChar (SneakHeadAlpha x) = alphaToChar x+unSnakeHeadChar :: SnakeHeadChar -> Char+unSnakeHeadChar SnakeHeadUnderscore = '_'+unSnakeHeadChar (SnakeHeadAlpha x) = alphaToChar x -sneakHeadChar :: CodeParsing m => m SneakHeadChar-sneakHeadChar =-  SneakHeadUnderscore <$ P.char '_' <|>-  SneakHeadAlpha <$> alphaChar+snakeHeadChar :: CodeParsing m => m SnakeHeadChar+snakeHeadChar =+  SnakeHeadUnderscore <$ P.char '_' <|>+  SnakeHeadAlpha <$> alphaChar -charToSneakHead :: Char -> Maybe SneakHeadChar-charToSneakHead x = P.parseMaybe sneakHeadChar [x]+charToSnakeHead :: Char -> Maybe SnakeHeadChar+charToSnakeHead x = P.parseMaybe snakeHeadChar [x]  -- | -- Extracts a Char of [a-zA-Z_]. -- Also throws compile error if non [a-zA-Z_] is passed. ----- >>> [sneakHeadCharQ|x|]--- SneakHeadAlpha (AlphaLower X_)+-- >>> [snakeHeadCharQ|x|]+-- SnakeHeadAlpha (AlphaLower X_) ----- >>> [sneakHeadCharQ|X|]--- SneakHeadAlpha (AlphaUpper X)+-- >>> [snakeHeadCharQ|X|]+-- SnakeHeadAlpha (AlphaUpper X) ----- >>> [sneakHeadCharQ|_|]--- SneakHeadUnderscore-sneakHeadCharQ :: QuasiQuoter-sneakHeadCharQ = QuasiQuoter+-- >>> [snakeHeadCharQ|_|]+-- SnakeHeadUnderscore+snakeHeadCharQ :: QuasiQuoter+snakeHeadCharQ = QuasiQuoter   { quoteExp  = expQ   , quotePat  = error "not supported"   , quoteType = error "not supported"@@ -384,13 +384,13 @@   }   where     expQ :: String -> Q Exp-    expQ [] = fail "sneakHeadCharQ required a Char, but nothign is specified."+    expQ [] = fail "snakeHeadCharQ required a Char, but nothign is specified." -    expQ (x : []) = case charToSneakHead x of-      Nothing -> fail [i|'${x}' is not a SneakHeadChar.|]-      Just SneakHeadUnderscore ->-        conE $ mkName "SneakHeadUnderscore"-      Just (SneakHeadAlpha _) ->-        (ConE (mkName "SneakHeadAlpha") `AppE`) <$> (quoteExp alphaCharQ) [x]+    expQ (x : []) = case charToSnakeHead x of+      Nothing -> fail [i|'${x}' is not a SnakeHeadChar.|]+      Just SnakeHeadUnderscore ->+        conE $ mkName "SnakeHeadUnderscore"+      Just (SnakeHeadAlpha _) ->+        (ConE (mkName "SnakeHeadAlpha") `AppE`) <$> (quoteExp alphaCharQ) [x] -    expQ xs@(_ : _) = fail [i|sneakHeadCharQ required a Char, but a String is specified: ${xs}|]+    expQ xs@(_ : _) = fail [i|snakeHeadCharQ required a Char, but a String is specified: ${xs}|]
src/Data/String/Cases.hs view
@@ -144,37 +144,37 @@       pure $ ConE (mkName "Camel") `AppE` z `AppE` ListE zs  --- | Non empty sneak_case names "[a-zA-Z_][a-zA-Z0-9_]*"-data Sneak = Sneak SneakHeadChar [SneakChar]+-- | Non empty snake_case names "[a-zA-Z_][a-zA-Z0-9_]*"+data Snake = Snake SnakeHeadChar [SnakeChar]   deriving (Show, Eq) -instance Pretty Sneak where-  pretty = String.fromString . unSneakCase+instance Pretty Snake where+  pretty = String.fromString . unSnakeCase -unSneakCase :: Sneak -> String-unSneakCase (Sneak x xs) =-  unSneakHeadChar x : map unSneakChar xs+unSnakeCase :: Snake -> String+unSnakeCase (Snake x xs) =+  unSnakeHeadChar x : map unSnakeChar xs -parseSneakCase :: CodeParsing m => m Sneak-parseSneakCase =-  Sneak <$>-  sneakHeadChar <*>-  P.many sneakChar+parseSnakeCase :: CodeParsing m => m Snake+parseSnakeCase =+  Snake <$>+  snakeHeadChar <*>+  P.many snakeChar  -- | -- Simular to 'nonEmptyQ',--- but naming outsides of 'Sneak' will be rejected.+-- but naming outsides of 'Snake' will be rejected. ----- >>> [sneakQ|foo_bar|]--- Sneak (SneakHeadAlpha (AlphaLower F_)) [SneakAlphaNum (AlphaNumAlpha (AlphaLower O_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower O_)),SneakUnderscore,SneakAlphaNum (AlphaNumAlpha (AlphaLower B_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower A_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower R_))]+-- >>> [snakeQ|foo_bar|]+-- Snake (SnakeHeadAlpha (AlphaLower F_)) [SnakeAlphaNum (AlphaNumAlpha (AlphaLower O_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower O_)),SnakeUnderscore,SnakeAlphaNum (AlphaNumAlpha (AlphaLower B_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower A_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower R_))] ----- >>> [sneakQ|__constructor|]--- Sneak SneakHeadUnderscore [SneakUnderscore,SneakAlphaNum (AlphaNumAlpha (AlphaLower C_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower O_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower N_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower S_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower T_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower R_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower U_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower C_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower T_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower O_)),SneakAlphaNum (AlphaNumAlpha (AlphaLower R_))]+-- >>> [snakeQ|__constructor|]+-- Snake SnakeHeadUnderscore [SnakeUnderscore,SnakeAlphaNum (AlphaNumAlpha (AlphaLower C_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower O_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower N_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower S_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower T_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower R_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower U_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower C_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower T_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower O_)),SnakeAlphaNum (AlphaNumAlpha (AlphaLower R_))] ----- >>> [sneakQ|FOO_MEE_9|]--- Sneak (SneakHeadAlpha (AlphaUpper F)) [SneakAlphaNum (AlphaNumAlpha (AlphaUpper O)),SneakAlphaNum (AlphaNumAlpha (AlphaUpper O)),SneakUnderscore,SneakAlphaNum (AlphaNumAlpha (AlphaUpper M)),SneakAlphaNum (AlphaNumAlpha (AlphaUpper E)),SneakAlphaNum (AlphaNumAlpha (AlphaUpper E)),SneakUnderscore,SneakAlphaNum (AlphaNumDigit D9)]-sneakQ :: QuasiQuoter-sneakQ = QuasiQuoter+-- >>> [snakeQ|FOO_MEE_9|]+-- Snake (SnakeHeadAlpha (AlphaUpper F)) [SnakeAlphaNum (AlphaNumAlpha (AlphaUpper O)),SnakeAlphaNum (AlphaNumAlpha (AlphaUpper O)),SnakeUnderscore,SnakeAlphaNum (AlphaNumAlpha (AlphaUpper M)),SnakeAlphaNum (AlphaNumAlpha (AlphaUpper E)),SnakeAlphaNum (AlphaNumAlpha (AlphaUpper E)),SnakeUnderscore,SnakeAlphaNum (AlphaNumDigit D9)]+snakeQ :: QuasiQuoter+snakeQ = QuasiQuoter   { quoteExp  = expQ   , quotePat  = error "not supported"   , quoteType = error "not supported"@@ -182,11 +182,11 @@   }   where     expQ :: String -> Q Exp-    expQ [] = fail "sneakQ required a non empty string, but the empty string is specified."+    expQ [] = fail "snakeQ required a non empty string, but the empty string is specified."     expQ (x : xs) = do-      z <- (quoteExp sneakHeadCharQ) [x]-      zs <- mapM (quoteExp sneakCharQ) $ map (: []) xs-      pure $ ConE (mkName "Sneak") `AppE` z `AppE` ListE zs+      z <- (quoteExp snakeHeadCharQ) [x]+      zs <- mapM (quoteExp snakeCharQ) $ map (: []) xs+      pure $ ConE (mkName "Snake") `AppE` z `AppE` ListE zs   -- | Non empty "veryflatten" names [a-z]+
test/doctest/Main.hs view
@@ -13,8 +13,7 @@  ghcExtensions :: [String] ghcExtensions =-    [ "-XAutoDeriveTypeable"-    , "-XBangPatterns"+    [ "-XBangPatterns"     , "-XBinaryLiterals"     , "-XConstraintKinds"     , "-XDataKinds"@@ -36,7 +35,6 @@     , "-XInstanceSigs"     , "-XKindSignatures"     , "-XLambdaCase"-    , "-XMonadFailDesugaring"     , "-XMultiParamTypeClasses"     , "-XMultiWayIf"     , "-XNamedFieldPuns"