ascii-superset-1.2.7.0: Representing ASCII with refined supersets
Safe HaskellSafe-Inferred
LanguageHaskell2010

ASCII.CaseRefinement

Synopsis

ASCII'case type constructor

data ASCII'case (letterCase :: Case) superset Source #

Indicates that a value from some ASCII superset is valid ASCII, and also that any letters belong to a particular Case indicated by the letterCase type parameter

The superset type parameter is the ASCII superset, which should be a type with an instance of either CharSuperset or StringSuperset.

For example, whereas a Text value may contain a combination of ASCII and non-ASCII characters, a value of type ASCII'case 'UpperCase Text may contain only uppercase ASCII letters and ASCII non-letters.

Instances

Instances details
(FromChar superset, KnownCase letterCase) => ToCasefulChar letterCase (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

toCasefulChar :: CaselessChar -> ASCII'case letterCase superset Source #

(FromString superset, KnownCase letterCase) => ToCasefulString letterCase (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

toCasefulString :: [CaselessChar] -> ASCII'case letterCase superset Source #

ToCaselessChar char => ToCaselessChar (ASCII'case letterCase char) Source # 
Instance details

Defined in ASCII.CaseRefinement

ToCaselessString string => ToCaselessString (ASCII'case letterCase string) Source # 
Instance details

Defined in ASCII.CaseRefinement

CharSuperset char => ToChar (ASCII'case letterCase char) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

isAsciiChar :: ASCII'case letterCase char -> Bool Source #

toCharUnsafe :: ASCII'case letterCase char -> Char Source #

ToString string => ToString (ASCII'case letterCase string) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

isAsciiString :: ASCII'case letterCase string -> Bool Source #

toCharListUnsafe :: ASCII'case letterCase string -> [Char] Source #

toCharListSub :: ASCII'case letterCase string -> [Char] Source #

ToText (ASCII'case letterCase ByteString) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII'case letterCase ByteString) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII'case letterCase Text) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII'case letterCase Text) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII'case letterCase [Char]) Source # 
Instance details

Defined in ASCII.Superset.Text

Methods

toStrictText :: ASCII'case letterCase [Char] -> Text Source #

toLazyText :: ASCII'case letterCase [Char] -> Text Source #

toUnicodeCharList :: ASCII'case letterCase [Char] -> [Char] Source #

(Data superset, Typeable letterCase) => Data (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ASCII'case letterCase superset -> c (ASCII'case letterCase superset) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ASCII'case letterCase superset) #

toConstr :: ASCII'case letterCase superset -> Constr #

dataTypeOf :: ASCII'case letterCase superset -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ASCII'case letterCase superset)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ASCII'case letterCase superset)) #

gmapT :: (forall b. Data b => b -> b) -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ASCII'case letterCase superset -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ASCII'case letterCase superset -> r #

gmapQ :: (forall d. Data d => d -> u) -> ASCII'case letterCase superset -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ASCII'case letterCase superset -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ASCII'case letterCase superset -> m (ASCII'case letterCase superset) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ASCII'case letterCase superset -> m (ASCII'case letterCase superset) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ASCII'case letterCase superset -> m (ASCII'case letterCase superset) #

Monoid superset => Monoid (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

mempty :: ASCII'case letterCase superset #

mappend :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

mconcat :: [ASCII'case letterCase superset] -> ASCII'case letterCase superset #

Semigroup superset => Semigroup (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

(<>) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

sconcat :: NonEmpty (ASCII'case letterCase superset) -> ASCII'case letterCase superset #

stimes :: Integral b => b -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

Generic (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Associated Types

type Rep (ASCII'case letterCase superset) :: Type -> Type #

Methods

from :: ASCII'case letterCase superset -> Rep (ASCII'case letterCase superset) x #

to :: Rep (ASCII'case letterCase superset) x -> ASCII'case letterCase superset #

Show superset => Show (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

showsPrec :: Int -> ASCII'case letterCase superset -> ShowS #

show :: ASCII'case letterCase superset -> String #

showList :: [ASCII'case letterCase superset] -> ShowS #

Eq superset => Eq (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

(==) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

(/=) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

Ord superset => Ord (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

compare :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Ordering #

(<) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

(<=) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

(>) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

(>=) :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> Bool #

max :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

min :: ASCII'case letterCase superset -> ASCII'case letterCase superset -> ASCII'case letterCase superset #

Hashable superset => Hashable (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

hashWithSalt :: Int -> ASCII'case letterCase superset -> Int #

hash :: ASCII'case letterCase superset -> Int #

Lift (ASCII'case letterCase superset) superset Source # 
Instance details

Defined in ASCII.Lift

Methods

lift :: ASCII'case letterCase superset -> superset Source #

Lift (ASCII'case letterCase superset) (ASCII superset) Source # 
Instance details

Defined in ASCII.Lift

Methods

lift :: ASCII'case letterCase superset -> ASCII superset Source #

type Rep (ASCII'case letterCase superset) Source # 
Instance details

Defined in ASCII.CaseRefinement

type Rep (ASCII'case letterCase superset) = D1 ('MetaData "ASCII'case" "ASCII.CaseRefinement" "ascii-superset-1.2.7.0-5COrj9fA37c3yqGgQp2pb7" 'True) (C1 ('MetaCons "ASCII'case_Unsafe" 'PrefixI 'True) (S1 ('MetaSel ('Just "lift") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 superset)))

lift :: ASCII'case letterCase superset -> superset Source #

Discard the evidence that the value is known to consist entirely of ASCII characters in a particular case

asciiCaseUnsafe :: superset -> ASCII'case letterCase superset Source #

Change the type of an ASCII superset value that is known to be valid ASCII where letters are restricted to the Case designated by the letterCase type variable

This is "unsafe" because this assertion is unchecked, so this function is capable of producing an invalid ASCII'case value.

forgetCase :: ASCII'case letterCase superset -> ASCII superset Source #

Aliases

The ASCII'upper and ASCII'lower type aliases exist primarily so that you can use ASCII'case without the DataKinds language extension.

type ASCII'upper superset = ASCII'case 'UpperCase superset Source #

type ASCII'lower superset = ASCII'case 'LowerCase superset Source #

Character functions

validateChar Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> CharSuperset superset 
=> superset

Character which may or may not be in the ASCII character set; if a letter, may be in any case

-> Maybe (ASCII'case letterCase superset) 

Return Just an ASCII'case character if the input is an ASCII character in the proper case, or Nothing otherwise

fromCaselessChar Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> CharSuperset superset 
=> CaselessChar

Character which, if it is a letter, does not have a specified case

-> ASCII'case letterCase superset 

Lift a CaselessChar into a superset type, wrapped in the ASCII'case refinement to save the evidence that it is ASCII in a particular case

toCaselessChar Source #

Arguments

:: CharSuperset superset 
=> ASCII'case letterCase superset

Character that is known to be ASCII, and in the particular case if it is a letter

-> CaselessChar 

Given a character from some type that is known to represent an ASCII character in a particular case, obtain the caseless ASCII character it represents

substituteChar :: forall letterCase superset. KnownCase letterCase => CharSuperset superset => superset -> ASCII'case letterCase superset Source #

Return an ASCII'case character if the input is an ASCII character in the proper case, or Substitute otherwise

asCaselessChar Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> CharSuperset superset 
=> (CaselessChar -> CaselessChar)

Case-insensitive function over ASCII characters

-> ASCII'case letterCase superset

Character that is known to be ASCII, and in the particular case if it is a letter

-> ASCII'case letterCase superset 

Given a character from a larger set that is known to represent an ASCII character, manipulate it as if it were an ASCII character

refineCharToCase :: forall letterCase char. KnownCase letterCase => CharSuperset char => ASCII char -> ASCII'case letterCase char Source #

Given an ASCII superset character that is known to be valid ASCII, refine it further by converting it to a particular letter case

String functions

validateString Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> StringSuperset superset 
=> superset

String which may or may not be valid ASCII, where letters may be in any case

-> Maybe (ASCII'case letterCase superset) 

Return Just an ASCII'case string if the input consists entirely of ASCII characters in the proper case, or Nothing otherwise

fromCaselessCharList Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> StringSuperset superset 
=> [CaselessChar]

Case-insensitive ASCII string represented as a list of caseless characters

-> ASCII'case letterCase superset 

Lift a list of CaselessChar into a superset string type, wrapped in the ASCII'case refinement to save the evidence that all of the characters in the string are ASCII in a particular case

toCaselessCharList Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> StringSuperset superset 
=> ASCII'case letterCase superset

String that is known to be valid ASCII in a particular case

-> [CaselessChar] 

Given a string from some type that is known to represent only ASCII characters in a particular case, obtain the caseless characters it represents

substituteString Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> StringSuperset superset 
=> superset

String which may or may not be valid ASCII, where letters may be in any case

-> ASCII'case letterCase superset 

Forces a string from a larger character set into cased ASCII by using the Substitute character in place of any unacceptable characters

mapChars Source #

Arguments

:: forall letterCase superset. KnownCase letterCase 
=> StringSuperset superset 
=> (CaselessChar -> CaselessChar)

Case-insensitive function over ASCII characters

-> ASCII'case letterCase superset

String that is known to be valid ASCII in a particular case

-> ASCII'case letterCase superset 

Given a string from a larger set that is known to consist entirely of ASCII characters in a particular case, map over the characters in the string as if they were caseless ASCII characters

refineStringToCase :: forall letterCase char. KnownCase letterCase => StringSuperset char => ASCII char -> ASCII'case letterCase char Source #

Given an ASCII superset string that is known to be valid ASCII, refine it further by converting it to a particular letter case

KnownCase

class KnownCase (letterCase :: Case) where Source #

Methods

theCase :: Case Source #

Instances

Instances details
KnownCase 'LowerCase Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

theCase :: Case Source #

KnownCase 'UpperCase Source # 
Instance details

Defined in ASCII.CaseRefinement

Methods

theCase :: Case Source #