Options.Applicative.Help.Chunk

optparse-applicative-0.12.1.0: Utilities and combinators for parsing command line options

Safe Haskell | Safe
Language | Haskell98

Options.Applicative.Help.Chunk

Synopsis

- mappendWith :: Monoid a => a -> a -> a -> a
- newtype Chunk a = Chunk {
  - unChunk :: Maybe a
  }
- chunked :: (a -> a -> a) -> Chunk a -> Chunk a -> Chunk a
- listToChunk :: Monoid a => [a] -> Chunk a
- (<<+>>) :: Chunk Doc -> Chunk Doc -> Chunk Doc
- (<</>>) :: Chunk Doc -> Chunk Doc -> Chunk Doc
- vcatChunks :: [Chunk Doc] -> Chunk Doc
- vsepChunks :: [Chunk Doc] -> Chunk Doc
- isEmpty :: Chunk a -> Bool
- stringChunk :: String -> Chunk Doc
- paragraph :: String -> Chunk Doc
- extractChunk :: Monoid a => Chunk a -> a
- tabulate :: [(Doc, Doc)] -> Chunk Doc

# Documentation

mappendWith :: Monoid a => a -> a -> a -> a

newtype Chunk a

The free monoid on a semigroup `a`.

Constructors

Chunk |
Fields unChunk :: Maybe a

Instances

Monad Chunk |
Functor Chunk |
Applicative Chunk |
Alternative Chunk |
MonadPlus Chunk |
Eq a => Eq (Chunk a) |
Show a => Show (Chunk a) |
Monoid a => Monoid (Chunk a) |

chunked :: (a -> a -> a) -> Chunk a -> Chunk a -> Chunk a

Given a semigroup structure on `a`, return a monoid structure on 'Chunk a'.

Note that this is not the same as `liftA2`.

listToChunk :: Monoid a => [a] -> Chunk a

Concatenate a list into a Chunk. `listToChunk` satisfies:

    isEmpty . listToChunk = null
    listToChunk = mconcat . fmap pure

(<<+>>) :: Chunk Doc -> Chunk Doc -> Chunk Doc

Concatenate two `Chunk`s with a space in between. If one is empty, this just returns the other one.

Unlike `<+>` for `Doc`, this operation has a unit element, namely the empty `Chunk`.

(<</>>) :: Chunk Doc -> Chunk Doc -> Chunk Doc

Concatenate two `Chunk`s with a softline in between. This is exactly like `<<+>>`, but uses a softline instead of a space.

vcatChunks :: [Chunk Doc] -> Chunk Doc

Concatenate `Chunk`s vertically.

vsepChunks :: [Chunk Doc] -> Chunk Doc

Concatenate `Chunk`s vertically separated by empty lines.

isEmpty :: Chunk a -> Bool

Whether a `Chunk` is empty. Note that something like 'pure mempty' is not considered an empty chunk, even though the underlying `Doc` is empty.

stringChunk :: String -> Chunk Doc

Convert a `String` into a `Chunk`. This satisfies:

    isEmpty . stringChunk = null
    extractChunk . stringChunk = string

paragraph :: String -> Chunk Doc

Convert a paragraph into a `Chunk`. The resulting chunk is composed by the words of the original paragraph separated by softlines, so it will be automatically word-wrapped when rendering the underlying document.

This satisfies:

    isEmpty . paragraph = null . words

extractChunk :: Monoid a => Chunk a -> a

Part of a constrained comonad instance.

This is the counit of the adjunction between `Chunk` and the forgetful functor from monoids to semigroups. It satisfies:

    extractChunk . pure = id
    extractChunk . fmap pure = id

tabulate :: [(Doc, Doc)] -> Chunk Doc

Display pairs of strings in a table.