Copyright | (c) digitally induced GmbH 2020 |
---|---|
Safe Haskell | None |
IHP.HaskellSupport
Contents
Description
Synopsis
- (|>) :: t1 -> (t1 -> t2) -> t2
- isEmpty :: IsEmpty value => value -> Bool
- whenEmpty :: (Applicative f, IsEmpty value) => value -> f () -> f ()
- whenNonEmpty :: (IsEmpty a, Applicative f) => a -> f () -> f ()
- get :: forall model name value. (KnownSymbol name, HasField name model value) => Proxy name -> model -> value
- set :: forall model name value. (KnownSymbol name, SetField name model value) => Proxy name -> value -> model -> model
- setJust :: forall model name value. (KnownSymbol name, SetField name model (Maybe value)) => Proxy name -> value -> model -> model
- ifOrEmpty :: Monoid a => Bool -> a -> a
- modify :: forall model name value updateFunction. (KnownSymbol name, HasField name model value, SetField name model value) => Proxy name -> (value -> value) -> model -> model
- class SetField (field :: Symbol) model value | field model -> value where
- setField :: value -> model -> model
- class HasField field model value => UpdateField (field :: Symbol) model model' value value' | model model' value' -> value where
- updateField :: value' -> model -> model'
- incrementField :: forall model name value. (KnownSymbol name, HasField name model value, SetField name model value, Num value) => Proxy name -> model -> model
- decrementField :: forall model name value. (KnownSymbol name, HasField name model value, SetField name model value, Num value) => Proxy name -> model -> model
- isToday :: UTCTime -> IO Bool
- isToday' :: UTCTime -> UTCTime -> Bool
- forEach :: (MonoFoldable mono, Applicative m) => mono -> (Element mono -> m ()) -> m ()
- forEachWithIndex :: Applicative m => [a] -> ((Int, a) -> m ()) -> m ()
- textToInt :: Text -> Maybe Int
- isWeekend :: Day -> Bool
- todayIsWeekend :: IO Bool
- debug :: Show value => value -> value
- includes :: (MonoFoldable container, Eq (Element container)) => Element container -> container -> Bool
- stripTags :: Text -> Text
- symbolToText :: forall symbol. KnownSymbol symbol => Text
- symbolToByteString :: forall symbol. KnownSymbol symbol => ByteString
- class IsEmpty value where
- copyFields :: CopyFields fields destinationRecord sourceRecord => sourceRecord -> destinationRecord -> destinationRecord
Documentation
isEmpty :: IsEmpty value => value -> Bool Source #
Returns True when the value is an empty string, empty list, zero UUID, etc.
whenEmpty :: (Applicative f, IsEmpty value) => value -> f () -> f () Source #
whenNonEmpty :: (IsEmpty a, Applicative f) => a -> f () -> f () Source #
get :: forall model name value. (KnownSymbol name, HasField name model value) => Proxy name -> model -> value Source #
Returns the field value for a field name
Example:
data Project = Project { name :: Text, isPublic :: Bool } let project = Project { name = "Hello World", isPublic = False }
>>>
get #name project
"Hello World"
>>>
get #isPublic project
False
set :: forall model name value. (KnownSymbol name, SetField name model value) => Proxy name -> value -> model -> model Source #
Sets a field of a record and returns the new record.
Example:
data Project = Project { name :: Text, isPublic :: Bool } let project = Project { name = "Hello World", isPublic = False }
>>>
set #name "New Name" project
Project { name = "New Name", isPublic = False }
>>>
set #isPublic True project
Project { name = "Hello World", isPublic = True }
setJust :: forall model name value. (KnownSymbol name, SetField name model (Maybe value)) => Proxy name -> value -> model -> model Source #
modify :: forall model name value updateFunction. (KnownSymbol name, HasField name model value, SetField name model value) => Proxy name -> (value -> value) -> model -> model Source #
class HasField field model value => UpdateField (field :: Symbol) model model' value value' | model model' value' -> value where Source #
Methods
updateField :: value' -> model -> model' Source #
incrementField :: forall model name value. (KnownSymbol name, HasField name model value, SetField name model value, Num value) => Proxy name -> model -> model Source #
Plus 1
on record field.
Example:
data Project = Project { name :: Text, followersCount :: Int } let project = Project { name = "Hello World", followersCount = 0 }
>>>
project |> incrementField #followersCount
Project { name = "Hello World", followersCount = 1 }
decrementField :: forall model name value. (KnownSymbol name, HasField name model value, SetField name model value, Num value) => Proxy name -> model -> model Source #
Minus 1
on a record field.
Example:
data Project = Project { name :: Text, followersCount :: Int } let project = Project { name = "Hello World", followersCount = 1337 }
>>>
project |> decrementField #followersCount
Project { name = "Hello World", followersCount = 1336 }
forEach :: (MonoFoldable mono, Applicative m) => mono -> (Element mono -> m ()) -> m () Source #
Example: forEach users user -> putStrLn (tshow user)
forEachWithIndex :: Applicative m => [a] -> ((Int, a) -> m ()) -> m () Source #
Example: forEachWithIndex users (index, user) -> putStrLn (tshow user)
textToInt :: Text -> Maybe Int Source #
Parses a text to an int. Returns Nothing
on failure.
Example:
>>>
textToInt "1337"
Just 1337
>>>
textToInt "bad input"
Nothing
isWeekend :: Day -> Bool Source #
Returns True
when day is Saturday or Sunday.
Example:
>>>
isWeekend $ fromGregorian 2019 10 7
False
>>>
isWeekend $ fromGregorian 2020 6 13
True
todayIsWeekend :: IO Bool Source #
Returns True
when today is Saturday or Sunday.
Example:
do todayIsWeekend <- isWeekend when todayIsWeekend (putStrLn "It's weekend!")
debug :: Show value => value -> value Source #
Debug-print a value during evaluation
Alias for traceShowId
includes :: (MonoFoldable container, Eq (Element container)) => Element container -> container -> Bool Source #
stripTags :: Text -> Text Source #
Removes all html tags from a given html text
>>>
stripTags "This is <b>Bold</b>"
"This is Bold"
symbolToText :: forall symbol. KnownSymbol symbol => Text Source #
Returns the value of a type level symbol as a text
>>>
symbolToText @"hello"
"hello"
>>>
symbolToText @(GetTableName User)
"users"
symbolToByteString :: forall symbol. KnownSymbol symbol => ByteString Source #
Returns the value of a type level symbol as a bytestring
>>>
symbolToByteString @"hello"
"hello"
>>>
symbolToByteString @(GetTableName User)
"users"
class IsEmpty value where Source #
Used by nonEmpty
and isEmptyValue
to check for emptyness
Methods
isEmpty :: value -> Bool Source #
Returns True when the value is an empty string, empty list, zero UUID, etc.
copyFields :: CopyFields fields destinationRecord sourceRecord => sourceRecord -> destinationRecord -> destinationRecord Source #
Orphan instances
IsString UUID Source # | |
Methods fromString :: String -> UUID # | |
Default UUID Source # | |
(KnownSymbol name, name' ~ name) => IsLabel name (Proxy name') Source # | |
IsString string => IsString (Maybe string) Source # | Allows `Just "someThing"` to be written as `"someThing"` |
Methods fromString :: String -> Maybe string # |