Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.StringVariants
Synopsis
- data NonEmptyText (n :: Nat)
- mkNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NonEmptyText n)
- unsafeMkNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> NonEmptyText n
- mkNonEmptyTextWithTruncate :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NonEmptyText n)
- compileNonEmptyText :: Integer -> QuasiQuoter
- compileNonEmptyTextKnownLength :: QuasiQuoter
- nonEmptyTextToText :: forall (n :: Nat). NonEmptyText n -> Text
- convertEmptyTextToNothing :: Text -> Maybe Text
- maybeTextToTruncateNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Maybe Text -> NullableNonEmptyText n
- type (<=) (x :: t) (y :: t) = Assert (x <=? y) (LeErrMsg x y :: Constraint)
- widen :: forall (n :: Natural) (m :: Natural). (1 <= n, n <= m) => NonEmptyText n -> NonEmptyText m
- takeNonEmptyText :: forall (m :: Nat) (n :: Nat). (KnownNat m, KnownNat n, 1 <= n, n <= m) => NonEmptyText m -> NonEmptyText n
- takeNonEmptyTextEnd :: forall (m :: Nat) (n :: Nat). (KnownNat m, KnownNat n, 1 <= n, n <= m) => NonEmptyText m -> NonEmptyText n
- chunksOfNonEmptyText :: forall (chunkSize :: Nat) (totalSize :: Nat). (KnownNat chunkSize, KnownNat totalSize, chunkSize <= totalSize, 1 <= chunkSize) => NonEmptyText totalSize -> NonEmpty (NonEmptyText chunkSize)
- filterNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => (Char -> Bool) -> NonEmptyText n -> Maybe (NonEmptyText n)
- (<>|) :: forall (n :: Nat) (m :: Nat). NonEmptyText n -> NonEmptyText m -> NonEmptyText (n + m)
- data ContainsNonWhitespaceCharacters = ContainsNonWhitespaceCharacters
- exactLengthRefinedToRange :: forall (n :: Nat). Refined (ContainsNonWhitespaceCharacters && SizeEqualTo n) Text -> NonEmptyText n
- nonEmptyTextFromRefined :: forall (n :: Nat). Refined (ContainsNonWhitespaceCharacters && (SizeLessThan n || SizeEqualTo n)) Text -> NonEmptyText n
- refinedFromNonEmptyText :: forall (n :: Nat). NonEmptyText n -> Refined (ContainsNonWhitespaceCharacters && (SizeLessThan n || SizeEqualTo n)) Text
- data Prose
- mkProse :: Text -> Maybe Prose
- compileProse :: QuasiQuoter
- proseToText :: Prose -> Text
- proseFromNonEmptyText :: forall (n :: Nat). NonEmptyText n -> Prose
- newtype NullableNonEmptyText (n :: Nat) = NullableNonEmptyText (Maybe (NonEmptyText n))
- mkNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NullableNonEmptyText n)
- nullNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n
- compileNullableNonEmptyText :: Integer -> QuasiQuoter
- nonEmptyTextToNullable :: forall (n :: Nat). NonEmptyText n -> NullableNonEmptyText n
- maybeNonEmptyTextToNullable :: forall (n :: Nat). Maybe (NonEmptyText n) -> NullableNonEmptyText n
- nullableNonEmptyTextToMaybeText :: forall (n :: Nat). NullableNonEmptyText n -> Maybe Text
- nullableNonEmptyTextToMaybeNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n -> Maybe (NonEmptyText n)
- parseNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Object -> Parser (NullableNonEmptyText n)
- fromMaybeNullableText :: forall (n :: Nat). Maybe (NullableNonEmptyText n) -> NullableNonEmptyText n
- isNullNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n -> Bool
Non empty text
data NonEmptyText (n :: Nat) Source #
Non Empty Text, requires the input is between 1 and n
chars and not just whitespace.
Instances
Constructing
mkNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NonEmptyText n) Source #
unsafeMkNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> NonEmptyText n Source #
Make a NonEmptyText when you can manually verify the length
mkNonEmptyTextWithTruncate :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NonEmptyText n) Source #
Converting
nonEmptyTextToText :: forall (n :: Nat). NonEmptyText n -> Text Source #
maybeTextToTruncateNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Maybe Text -> NullableNonEmptyText n Source #
type (<=) (x :: t) (y :: t) = Assert (x <=? y) (LeErrMsg x y :: Constraint) infix 4 #
Comparison (<=) of comparable types, as a constraint.
Since: base-4.16.0.0
widen :: forall (n :: Natural) (m :: Natural). (1 <= n, n <= m) => NonEmptyText n -> NonEmptyText m Source #
Converts a NonEmptyText
to a wider NonEmptyText
Operations
takeNonEmptyText :: forall (m :: Nat) (n :: Nat). (KnownNat m, KnownNat n, 1 <= n, n <= m) => NonEmptyText m -> NonEmptyText n Source #
Narrows the maximum length, dropping any remaining trailing characters.
takeNonEmptyTextEnd :: forall (m :: Nat) (n :: Nat). (KnownNat m, KnownNat n, 1 <= n, n <= m) => NonEmptyText m -> NonEmptyText n Source #
Narrows the maximum length, dropping any prefix remaining characters.
chunksOfNonEmptyText :: forall (chunkSize :: Nat) (totalSize :: Nat). (KnownNat chunkSize, KnownNat totalSize, chunkSize <= totalSize, 1 <= chunkSize) => NonEmptyText totalSize -> NonEmpty (NonEmptyText chunkSize) Source #
O(n) Splits a NonEmptyText
into components of length chunkSize
. The
chunks may be shorter than the chunkSize depending on the length
of the input and spacing. Each chunk is stripped of whitespace.
filterNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => (Char -> Bool) -> NonEmptyText n -> Maybe (NonEmptyText n) Source #
Identical to the normal text filter function, but maintains the type-level invariant that the text length is <= n, unlike unwrapping the text, filtering, then rewrapping the text.
Will return Nothing if the resulting length is zero.
(<>|) :: forall (n :: Nat) (m :: Nat). NonEmptyText n -> NonEmptyText m -> NonEmptyText (n + m) Source #
Concat two NonEmptyText values, with the new maximum length being the sum of the two maximum lengths of the inputs.
Mnemonic: <>
for monoid, |
from NonEmpty's :|
operator
Conversions between Refined
and NonEmptyText
.
data ContainsNonWhitespaceCharacters Source #
Constructors
ContainsNonWhitespaceCharacters |
Instances
Generic ContainsNonWhitespaceCharacters Source # | |||||
Defined in Data.StringVariants.NonEmptyText Associated Types
| |||||
Predicate ContainsNonWhitespaceCharacters Text Source # | |||||
Defined in Data.StringVariants.NonEmptyText Methods validate :: Proxy ContainsNonWhitespaceCharacters -> Text -> Maybe RefineException # | |||||
type Rep ContainsNonWhitespaceCharacters Source # | |||||
Defined in Data.StringVariants.NonEmptyText |
exactLengthRefinedToRange :: forall (n :: Nat). Refined (ContainsNonWhitespaceCharacters && SizeEqualTo n) Text -> NonEmptyText n Source #
nonEmptyTextFromRefined :: forall (n :: Nat). Refined (ContainsNonWhitespaceCharacters && (SizeLessThan n || SizeEqualTo n)) Text -> NonEmptyText n Source #
refinedFromNonEmptyText :: forall (n :: Nat). NonEmptyText n -> Refined (ContainsNonWhitespaceCharacters && (SizeLessThan n || SizeEqualTo n)) Text Source #
Non-empty, whitespace-trimmed text with no character limit
Whitespace-trimmed, non-empty text, for use with API endpoints.
The rationale is that there are many situations where if a client sends
text that is empty or all whitespace, there's probably a client error.
Not suitable for database fields, as there is no character limit (see
ProsePersistFieldMsg
).
Instances
FromJSON Prose Source # | |
Defined in Data.StringVariants.Prose.Internal | |
ToJSON Prose Source # | |
ToJSONKey Prose Source # | |
Defined in Data.StringVariants.Prose.Internal | |
Semigroup Prose Source # | |
Show Prose Source # | |
Eq Prose Source # | |
Ord Prose Source # | |
ConvertibleStrings Prose Text Source # | |
Defined in Data.StringVariants.Prose.Internal Methods convertString :: Prose -> Text # | |
ConvertibleStrings Prose Text Source # | |
Defined in Data.StringVariants.Prose.Internal Methods convertString :: Prose -> Text # | |
Lift Prose Source # | |
proseToText :: Prose -> Text Source #
proseFromNonEmptyText :: forall (n :: Nat). NonEmptyText n -> Prose Source #
Nullable non empty text
newtype NullableNonEmptyText (n :: Nat) Source #
Newtype wrapper around Maybe NonEmptyText that converts empty string to Nothing
.
is used in API types to represent optional text fields when you do not want an empty string to fail to parse.
Like NullableNonEmptyText
nNonEmptyText
, the payload Text
is guaranteed to be non-empty, within the character limit, and stripped of whitespace.
Unlike NonEmptyText
, it will successfully parse empty strings as nullNonEmptyText
.
Since Aeson version 2.2, fields of this type maybe be missing, null
, or empty without failing to parse.
Avoid using Maybe (NullableNonEmptyText n)
in API types, since it creates unnecessary edge cases that complicate the code.
NB: When using a version of Aeson prior to 2.2, you must use Maybe (NullableNonEmptyText n)
if you want to allow missing or null fields to parse.
data Person = Person { name ::NonEmptyText
50 , catchphrase ::NullableNonEmptyText
500 }
With this type definition, these four JSON objects below are valid and parse as Person Daniel nullNonEmptyText
.
{"name": "Daniel"} {"name": "Daniel", catchphrase: null} {"name": "Daniel", catchphrase: ""} {"name": "Daniel", catchphrase: " "}
These two JSON objects parses as Person Daniel (mkNullableNonEmptyText "Yabba-Dabba Do!")
{"name": "Daniel", catchphrase: "Yabba-Dabba Do!"} {"name": "Daniel", catchphrase: " Yabba-Dabba Do! "}
Use nullableNonEmptyTextToMaybeNonEmptyText
to extract Maybe (NonEmptyText n)
from NullableNonEmptyText n
.
Constructors
NullableNonEmptyText (Maybe (NonEmptyText n)) |
Instances
Lift (NullableNonEmptyText n :: Type) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods lift :: Quote m => NullableNonEmptyText n -> m Exp # liftTyped :: forall (m :: Type -> Type). Quote m => NullableNonEmptyText n -> Code m (NullableNonEmptyText n) # | |||||
(KnownNat n, 1 <= n) => FromJSON (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods parseJSON :: Value -> Parser (NullableNonEmptyText n) # parseJSONList :: Value -> Parser [NullableNonEmptyText n] # omittedField :: Maybe (NullableNonEmptyText n) # | |||||
ToJSON (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods toJSON :: NullableNonEmptyText n -> Value # toEncoding :: NullableNonEmptyText n -> Encoding # toJSONList :: [NullableNonEmptyText n] -> Value # toEncodingList :: [NullableNonEmptyText n] -> Encoding # omitField :: NullableNonEmptyText n -> Bool # | |||||
KnownNat n => Data (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NullableNonEmptyText n -> c (NullableNonEmptyText n) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NullableNonEmptyText n) # toConstr :: NullableNonEmptyText n -> Constr # dataTypeOf :: NullableNonEmptyText n -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NullableNonEmptyText n)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NullableNonEmptyText n)) # gmapT :: (forall b. Data b => b -> b) -> NullableNonEmptyText n -> NullableNonEmptyText n # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NullableNonEmptyText n -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NullableNonEmptyText n -> r # gmapQ :: (forall d. Data d => d -> u) -> NullableNonEmptyText n -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> NullableNonEmptyText n -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> NullableNonEmptyText n -> m (NullableNonEmptyText n) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NullableNonEmptyText n -> m (NullableNonEmptyText n) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NullableNonEmptyText n -> m (NullableNonEmptyText n) # | |||||
Generic (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Associated Types
Methods from :: NullableNonEmptyText n -> Rep (NullableNonEmptyText n) x # to :: Rep (NullableNonEmptyText n) x -> NullableNonEmptyText n # | |||||
Read (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods readsPrec :: Int -> ReadS (NullableNonEmptyText n) # readList :: ReadS [NullableNonEmptyText n] # readPrec :: ReadPrec (NullableNonEmptyText n) # | |||||
Show (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods showsPrec :: Int -> NullableNonEmptyText n -> ShowS # show :: NullableNonEmptyText n -> String # showList :: [NullableNonEmptyText n] -> ShowS # | |||||
NFData (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods rnf :: NullableNonEmptyText n -> () # | |||||
Eq (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods (==) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # (/=) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # | |||||
Ord (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods compare :: NullableNonEmptyText n -> NullableNonEmptyText n -> Ordering # (<) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # (<=) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # (>) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # (>=) :: NullableNonEmptyText n -> NullableNonEmptyText n -> Bool # max :: NullableNonEmptyText n -> NullableNonEmptyText n -> NullableNonEmptyText n # min :: NullableNonEmptyText n -> NullableNonEmptyText n -> NullableNonEmptyText n # | |||||
Hashable (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText Methods hashWithSalt :: Int -> NullableNonEmptyText n -> Int # hash :: NullableNonEmptyText n -> Int # | |||||
type Rep (NullableNonEmptyText n) Source # | |||||
Defined in Data.StringVariants.NullableNonEmptyText type Rep (NullableNonEmptyText n) = D1 ('MetaData "NullableNonEmptyText" "Data.StringVariants.NullableNonEmptyText" "string-variants-0.3.1.1-BWX0Ix8QNb3JisltayVghm" 'True) (C1 ('MetaCons "NullableNonEmptyText" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (NonEmptyText n))))) |
mkNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Maybe (NullableNonEmptyText n) Source #
nullNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n Source #
Converting
nonEmptyTextToNullable :: forall (n :: Nat). NonEmptyText n -> NullableNonEmptyText n Source #
maybeNonEmptyTextToNullable :: forall (n :: Nat). Maybe (NonEmptyText n) -> NullableNonEmptyText n Source #
nullableNonEmptyTextToMaybeText :: forall (n :: Nat). NullableNonEmptyText n -> Maybe Text Source #
nullableNonEmptyTextToMaybeNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n -> Maybe (NonEmptyText n) Source #
parseNullableNonEmptyText :: forall (n :: Nat). (KnownNat n, 1 <= n) => Text -> Object -> Parser (NullableNonEmptyText n) Source #
fromMaybeNullableText :: forall (n :: Nat). Maybe (NullableNonEmptyText n) -> NullableNonEmptyText n Source #
Information
isNullNonEmptyText :: forall (n :: Nat). NullableNonEmptyText n -> Bool Source #