| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Fit.Messages.Lens
Description
Some basic lenses for the Messages API. These are compatible with both lens and lens-family.
This package doesn't provide any lens combinators like ^. or ^.., so you'll need to use
ones from a lens package.
For example, the following code gets the values of the speed fields
from all of the record messages in the file:
Right fit <- readFileMessages "file.fit" let speeds = fit ^.. message 20 . field 6 . int
- messages :: Applicative f => (Message -> f Message) -> Messages -> f Messages
- message :: (Contravariant f, Applicative f) => Int -> (Message -> f Message) -> Messages -> f Messages
- messageNumber :: Functor f => (Int -> f Int) -> Message -> f Message
- fields :: Applicative f => (Field -> f Field) -> Message -> f Message
- field :: (Contravariant f, Applicative f) => Int -> (Field -> f Field) -> Message -> f Message
- fieldNumber :: Functor f => (Int -> f Int) -> Field -> f Field
- fieldValue :: Functor f => (Value -> f Value) -> Field -> f Field
- int :: Applicative f => (Int -> f Int) -> Field -> f Field
- real :: Applicative f => (Double -> f Double) -> Field -> f Field
- text :: Applicative f => (Text -> f Text) -> Field -> f Field
- byte :: Applicative f => (Word8 -> f Word8) -> Field -> f Field
- ints :: Applicative f => (Seq Int -> f (Seq Int)) -> Field -> f Field
- reals :: Applicative f => (Seq Double -> f (Seq Double)) -> Field -> f Field
- bytestring :: Applicative f => (ByteString -> f ByteString) -> Field -> f Field
Messages
messages :: Applicative f => (Message -> f Message) -> Messages -> f Messages Source
Traverse all the messages in a Messages
messages :: Traversal' Messages Message
message :: (Contravariant f, Applicative f) => Int -> (Message -> f Message) -> Messages -> f Messages Source
A Fold over the messages with the given message number
message :: Int -> Fold Messages Message
messageNumber :: Functor f => (Int -> f Int) -> Message -> f Message Source
Lens on the message number from a Message
messageNumber :: Lens' Message Int
Fields
fields :: Applicative f => (Field -> f Field) -> Message -> f Message Source
Traverse all the fields in a Message
fields :: Traversal' Message Field
field :: (Contravariant f, Applicative f) => Int -> (Field -> f Field) -> Message -> f Message Source
A Fold over the fields in a Message with the given field number
field :: Int -> Fold Message Field
fieldNumber :: Functor f => (Int -> f Int) -> Field -> f Field Source
Lens on the field number from a Field
fieldNumber :: Lens Field Int
fieldValue :: Functor f => (Value -> f Value) -> Field -> f Field Source
Lens on the Value from a Field
fieldValue :: Lens Field Value
Values
Generally when you're looking up the value for a particular field you'll know
the expected type ahead of time. If you know the field you're looking at holds
integers, then you can use int to directly get an Int instead of a
Singleton (IntValue x).
These traversals are not prisms, because to reconstruct the Field we need
the field number in addition to the wrapped value.
int :: Applicative f => (Int -> f Int) -> Field -> f Field Source
Traverse the Singleton and IntValue constructors for a field value
int :: Traversal' Field Int
real :: Applicative f => (Double -> f Double) -> Field -> f Field Source
Traverse the Singleton and RealValue constructors for a field value
real :: Traversal' Field Double
text :: Applicative f => (Text -> f Text) -> Field -> f Field Source
Traverse the Singleton and TextValue constructors for a field value
text :: Traversal' Field Text
byte :: Applicative f => (Word8 -> f Word8) -> Field -> f Field Source
Traverse the Singleton and ByteValue constructors for a field value
byte :: Traversal' Field Word8
ints :: Applicative f => (Seq Int -> f (Seq Int)) -> Field -> f Field Source
Traverse the Array and IntArray constructors for a field value
ints :: Traversal' Field (Seq Int)
reals :: Applicative f => (Seq Double -> f (Seq Double)) -> Field -> f Field Source
Traverse the Array and RealArray constructors for a field value
reals :: Traversal' Field (Seq Double)
bytestring :: Applicative f => (ByteString -> f ByteString) -> Field -> f Field Source
Travese the Array and ByteArray constructors for a field value
bytestring :: Traversal' Field ByteString