Data.Text.Strict.Lens

lens-4.14: Lenses, Folds and Traversals

Copyright | (C) 2012-2016 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | None
Language | Haskell98

Data.Text.Strict.Lens

Description

Synopsis

- packed :: Iso' String Text
- unpacked :: Iso' Text String
- builder :: Iso' Text Builder
- text :: IndexedTraversal' Int Text Char
- utf8 :: Prism' ByteString Text
- _Text :: Iso' Text String
- pattern Text :: String -> Text

# Documentation

packed :: Iso' String Text #

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

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

    pack x ≡ x ^. packed
    unpack x ≡ x ^. from packed
    packed ≡ from unpacked
    packed ≡ iso pack unpack

unpacked :: Iso' Text String #

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

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

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

    unpacked ≡ from packed

    pack x ≡ x ^. from unpacked
    unpack x ≡ x ^. packed
    unpacked ≡ iso unpack pack

builder :: Iso' Text Builder #

Convert between strict `Text` and `Builder` .

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

text :: IndexedTraversal' Int Text Char #

Traverse the individual characters in strict `Text`.

    >>> anyOf text (=='o') "hello"
    True

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

    text ≡ unpacked . traversed
    text ≡ each

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

utf8 :: Prism' ByteString Text #

EncodeDecode a strict `Text` tofrom strict `ByteString`, via UTF-8.

    >>> utf8 # "☃"
    "\226\152\131"

_Text :: Iso' Text String #

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

    > _Text # "hello" -- :: Text

"hello"

pattern Text :: String -> Text #