module ACME.Yes.PreCure5.Parser.Common
  ( charCI
  , stringCI
  , isFullyConsumedBy
  ) where

import Text.Parsec
import Text.Parsec.String
import Data.Char

isFullyConsumedBy :: Parser String -> String -> Bool
isFullyConsumedBy p = isRight . parse (p >> eof) "The argument"

charCI :: Char -> Parser Char
charCI c | isAlpha c = (char (toUpper c)) <|> (char (toLower c))
         | otherwise = char c

stringCI :: String -> Parser String
stringCI = mapM charCI

isRight :: Either a b -> Bool
isRight (Right _) = True
isRight (Left  _) = False