ascii-superset-1.3.0.1: Representing ASCII with refined supersets
Safe HaskellSafe-Inferred
LanguageGHC2021

ASCII.Refinement

Synopsis

ASCII type constructor

data ASCII (superset :: Type) Source #

This type constructor indicates that a value from some ASCII superset is valid ASCII

The 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 Text may contain only ASCII characters.

Instances

Instances details
CharSuperset char => CharIso (ASCII char) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

toChar :: ASCII char -> Char Source #

StringSuperset string => StringIso (ASCII string) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

toCharList :: ASCII string -> [Char] Source #

mapChars :: (Char -> Char) -> ASCII string -> ASCII string Source #

CharSuperset char => CharSuperset (ASCII char) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

toCaseChar :: Case -> ASCII char -> ASCII char Source #

CharSuperset char => FromChar (ASCII char) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

fromChar :: Char -> ASCII char Source #

FromString string => FromString (ASCII string) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

fromCharList :: [Char] -> ASCII string Source #

StringSuperset string => StringSuperset (ASCII string) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

substituteString :: ASCII string -> ASCII string Source #

mapCharsUnsafe :: (Char -> Char) -> ASCII string -> ASCII string Source #

toCaseString :: Case -> ASCII string -> ASCII string Source #

ToCaselessChar char => ToCaselessChar (ASCII char) Source # 
Instance details

Defined in ASCII.Refinement.Internal

ToCaselessString string => ToCaselessString (ASCII string) Source # 
Instance details

Defined in ASCII.Refinement.Internal

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

Defined in ASCII.Refinement.Internal

Methods

isAsciiChar :: ASCII char -> Bool Source #

toCharUnsafe :: ASCII char -> Char Source #

ToString string => ToString (ASCII string) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

isAsciiString :: ASCII string -> Bool Source #

toCharListUnsafe :: ASCII string -> [Char] Source #

toCharListSub :: ASCII string -> [Char] Source #

ToText (ASCII ByteString) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII ByteString) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII Text) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII Text) Source # 
Instance details

Defined in ASCII.Superset.Text

ToText (ASCII [Char]) Source # 
Instance details

Defined in ASCII.Superset.Text

Data superset => Data (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

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

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

toConstr :: ASCII superset -> Constr #

dataTypeOf :: ASCII superset -> DataType #

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

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

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

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

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

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

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

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

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

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

Monoid superset => Monoid (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

mempty :: ASCII superset #

mappend :: ASCII superset -> ASCII superset -> ASCII superset #

mconcat :: [ASCII superset] -> ASCII superset #

Semigroup superset => Semigroup (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

(<>) :: ASCII superset -> ASCII superset -> ASCII superset #

sconcat :: NonEmpty (ASCII superset) -> ASCII superset #

stimes :: Integral b => b -> ASCII superset -> ASCII superset #

Generic (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Associated Types

type Rep (ASCII superset) :: Type -> Type #

Methods

from :: ASCII superset -> Rep (ASCII superset) x #

to :: Rep (ASCII superset) x -> ASCII superset #

Show superset => Show (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

showsPrec :: Int -> ASCII superset -> ShowS #

show :: ASCII superset -> String #

showList :: [ASCII superset] -> ShowS #

Eq superset => Eq (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

(==) :: ASCII superset -> ASCII superset -> Bool #

(/=) :: ASCII superset -> ASCII superset -> Bool #

Ord superset => Ord (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

compare :: ASCII superset -> ASCII superset -> Ordering #

(<) :: ASCII superset -> ASCII superset -> Bool #

(<=) :: ASCII superset -> ASCII superset -> Bool #

(>) :: ASCII superset -> ASCII superset -> Bool #

(>=) :: ASCII superset -> ASCII superset -> Bool #

max :: ASCII superset -> ASCII superset -> ASCII superset #

min :: ASCII superset -> ASCII superset -> ASCII superset #

Hashable superset => Hashable (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

Methods

hashWithSalt :: Int -> ASCII superset -> Int #

hash :: ASCII superset -> Int #

type Rep (ASCII superset) Source # 
Instance details

Defined in ASCII.Refinement.Internal

type Rep (ASCII superset) = D1 ('MetaData "ASCII" "ASCII.Refinement.Internal" "ascii-superset-1.3.0.1-CWfca0CnRv9GNcThvJtiLW" 'True) (C1 ('MetaCons "ASCII_Unsafe" 'PrefixI 'True) (S1 ('MetaSel ('Just "lift") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 superset)))

lift :: ASCII superset -> superset Source #

asciiUnsafe :: superset -> ASCII superset Source #

Change the type of an ASCII superset value that is known to be valid ASCII

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

Character functions

validateChar :: CharSuperset superset => superset -> Maybe (ASCII superset) Source #

(map validateChar [-1, 65, 97, 128] :: [Maybe (ASCII Int)])
    == [Nothing, Just (asciiUnsafe 65), Just (asciiUnsafe 97), Nothing]

fromChar :: CharSuperset superset => Char -> ASCII superset Source #

toChar :: CharSuperset superset => ASCII superset -> Char Source #

substituteChar :: CharSuperset superset => superset -> ASCII superset Source #

asChar :: CharSuperset superset => (Char -> Char) -> ASCII superset -> ASCII superset Source #

String functions

validateString :: StringSuperset superset => superset -> Maybe (ASCII superset) Source #

(map validateString ["Hello", "Cristóbal"] :: [Maybe (ASCII Text)])
    == [Just (asciiUnsafe "Hello"), Nothing]

(map validateString ["Hello", "Cristóbal"] :: [Maybe (ASCII String)])
    == [Just (asciiUnsafe "Hello"), Nothing]

fromCharList :: StringSuperset superset => [Char] -> ASCII superset Source #

fromCharList [CapitalLetterH, SmallLetterI, ExclamationMark]
    == (asciiUnsafe "Hi!" :: ASCII Text)

toCharList :: StringSuperset superset => ASCII superset -> [Char] Source #

toCharList (substituteString "Piñata" :: ASCII Text) ==
    [CapitalLetterP, SmallLetterI, Substitute, SmallLetterA, SmallLetterT, SmallLetterA]

substituteString :: StringSuperset superset => superset -> ASCII superset Source #

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

(substituteString "Cristóbal" :: ASCII Text) == asciiUnsafe "CristSUBbal"

mapChars :: StringSuperset superset => (Char -> Char) -> ASCII superset -> ASCII superset Source #