optics-extra-0.1: Extra utilities and instances for optics-core

Safe HaskellNone



This module provides Isos for converting strict Text to or from a String or Builder, and an IxTraversal for traversing the individual characters of a Text.

If you need to work with both strict and lazy text, Data.Text.Optics provides combinators that support both varieties using a typeclass.



packed :: Iso' String Text Source #

This isomorphism can be used to pack (or unpack) strict Text.

>>> "hello" ^. packed -- :: Text
pack x ≡ x ^. packed
unpack x ≡ x ^. re packed
packedre unpacked
packediso pack unpack

unpacked :: Iso' Text String Source #

This isomorphism can be used to unpack (or pack) strict Text.

>>> Strict.pack "hello" ^. unpacked -- :: String

This Iso is provided for notational convenience rather than out of great need, since

unpackedre packed
pack x ≡ x ^. re unpacked
unpack x ≡ x ^. packed
unpackediso unpack pack

builder :: Iso' Text Builder Source #

Convert between strict Text and Builder .

fromText x ≡ x ^. builder
toStrict (toLazyText x) ≡ x ^. re builder

text :: IxTraversal' Int Text Char Source #

Traverse the individual characters in strict Text.

>>> anyOf text (=='o') (Strict.pack "hello")

When the type is unambiguous, you can also use the more general each.

textunpacked % traversed

Note that when just using this as a Setter, sets map can be more efficient.

utf8 :: Prism' ByteString Text Source #

Encode/Decode a strict Text to/from strict ByteString, via UTF-8.

>>> utf8 # Strict.pack "☃"

_Text :: Iso' Text String Source #

This is an alias for unpacked that makes it more obvious how to use it with #

> _Text # "hello" -- :: Text


pattern Text :: String -> Text Source #