| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Network.MPD.Parse
Synopsis
- getStatusField :: Response Status -> (Status -> a) -> Maybe a
- getStatusFieldElement :: Response Status -> (Status -> Maybe a) -> Maybe a
- getTag :: Metadata -> Either a (Maybe Song) -> Maybe String
- processSong :: Metadata -> Maybe Song -> Maybe String
- maybePathCurrentSong :: Response (Maybe Song) -> Maybe String
- maybePathNextPlaylistSong :: Response [Song] -> Maybe String
- headMay :: [a] -> Maybe a
- valueToStringMay :: Value -> Maybe String
- (.=?) :: (KeyValue e a, ToJSON v) => Key -> Maybe v -> Maybe a
- objectJson :: [Maybe Pair] -> Value
- getStatusIdInt :: (Status -> Maybe Id) -> Either MPDError Status -> Maybe Int
Documentation
getStatusField :: Response Status -> (Status -> a) -> Maybe a Source #
Extract a field from the returned MPD.Status data record.
Helper to extract a specific field from the
Network.MPD.Status data record by providing the
corresponding field label. If the input status "st" is not Right a,
indicating an error, or the field label function is not applicable, it
returns Nothing.
Example:
ghci> import qualified Network.MPD as MPD ghci> st <- MPD.withMPD MPD.status ghci> getStatusField st MPD.stVolume
Just (Just 100)
getStatusFieldElement :: Response Status -> (Status -> Maybe a) -> Maybe a Source #
Go a level deeper than getStatusField. For nested Maybe a
fields from Status.
Example:
ghci> import qualified Network.MPD as MPD ghci> st <- MPD.withMPD MPD.status ghci> getStatusFieldElement st MPD.stVolume
Just 100
getTag :: Metadata -> Either a (Maybe Song) -> Maybe String Source #
Either check for the returned value of currentSong,
then call processSong or return Nothing.
processSong :: Metadata -> Maybe Song -> Maybe String Source #
Use sgGetTag to extract a tag from a song, safely
get only the head item of the returned Maybe list, then safely
convert it to a string.
maybePathCurrentSong :: Response (Maybe Song) -> Maybe String Source #
Get the current Song relative path with sgFilePath
maybePathNextPlaylistSong :: Response [Song] -> Maybe String Source #
Get the next song's relative path in the current playlist.
Using sgFilePath from the returned Response [Song].
headMay :: [a] -> Maybe a Source #
Safely get the head of a list. Same as Safe.headMay.
valueToStringMay :: Value -> Maybe String Source #
Convert Value to String within a Maybe context.
This Value is from MPD and is basically the same as a
String but used internally to store metadata values.
Example:
processSong :: Metadata -> Maybe Song -> Maybe String processSong _ Nothing = Nothing processSong tag (Just song) = do let tagVal = MPD.sgGetTag tag song valueToStringMay =<< (headMay =<< tagVal)
sgGetTag returns a Maybe [Value]. libmpd also provides
toString that can convert, along other types, a
Value to a String.
(.=?) :: (KeyValue e a, ToJSON v) => Key -> Maybe v -> Maybe a Source #
Check if Maybe v exists and is of type expected by
object as defined in Value, if it is return
both the key and value within the Maybe context tied with
.=. This gives support to 'optional' fields using
catMaybes that discard Nothing values and is meant to
prevent creating JSON key/value pairs with null values, e.g.:
jsonTags = object . catMaybes $
[ "artist" .=? artist
, "album" .=? album
, "title" .=? title
]
Where if a value on the right is Nothing that key/value pair will
not be included in object because of
catMaybes.