    -- |
    -- Module      : Foundation.String
    -- License     : BSD-style
    -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
    -- Stability   : experimental
    -- Portability : portable
    --
    -- Opaque packed String encoded in UTF8.
    --
    -- The type is an instance of IsString and IsList, which allow OverloadedStrings
    -- for string literal, and 'fromList' to convert a [Char] (Prelude String) to a packed
    -- representation
    --
    -- > {-# LANGUAGE OverloadedStrings #-}
    -- > s = "Hello World" :: String
    --
    -- > s = fromList ("Hello World" :: Prelude.String) :: String
    --
    -- Each unicode code point is represented by a variable encoding of 1 to 4 bytes,
    --
    -- For more information about UTF8: <https://en.wikipedia.org/wiki/UTF-8>
    --
    module Foundation.String
        ( String
        , Encoding(..)
        , fromBytes
        , fromBytesLenient
        , fromBytesUnsafe
        , toBytes
        , ValidationFailure(..)
        , lines
        , words
        , upper
        , lower
        , replace
        , indices
        , toBase64
        , toBase64URL
        , toBase64OpenBSD
        , breakLine
        ) where

    import Basement.String