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

Data.Text.Lazy.Optics

Description

This module provides Isos for converting lazy 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.

Synopsis

# Documentation

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

>>> "hello" ^. packed -- :: Text
"hello"

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


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

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

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


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

unpacked ≡ re packed


This is an alias for unpacked that makes it clearer how to use it with (#).

_Text = re packed

>>> _Text # "hello" -- :: Text
"hello"


Traverse the individual characters in a Text.

>>> anyOf text (=='c') \$ Text.pack "chello"
True

text = unpacked % traversed


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

text ≡ each


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

Convert between lazy Text and Builder .

fromLazyText x ≡ x ^. builder
toLazyText x ≡ x ^. re builder


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

Note: This function does not decode lazily, as it must consume the entire input before deciding whether or not it fails.

>>> ByteString.unpack (utf8 # Text.pack "☃")
[226,152,131]


pattern Text :: String -> Text Source #