xml-conduit-1.1.0.3: Pure-Haskell utilities for dealing with XML with the conduit package.

Safe Haskell | None

Text.XML.Stream.Render

Description

`Enumeratee`s to render XML `Event`s. Unlike libxml-enumerator and expat-enumerator, this module does not provide IO and ST variants, since the underlying rendering operations are pure functions.

Synopsis

- renderBuilder :: Monad m => RenderSettings -> Conduit Event m Builder
- renderBytes :: MonadUnsafeIO m => RenderSettings -> Conduit Event m ByteString
- renderText :: (MonadThrow m, MonadUnsafeIO m) => RenderSettings -> Conduit Event m Text
- data RenderSettings
- def :: Default a => a
- rsPretty :: RenderSettings -> Bool
- rsNamespaces :: RenderSettings -> [(Text, Text)]
- rsAttrOrder :: RenderSettings -> Name -> Map Name Text -> [(Name, Text)]
- orderAttrs :: [(Name, [Name])] -> Name -> Map Name Text -> [(Name, Text)]
- prettify :: Monad m => Conduit Event m Event

# Documentation

renderBuilder :: Monad m => RenderSettings -> Conduit Event m Builder

Render a stream of `Event`s into a stream of `Builder`s. Builders are from the blaze-builder package, and allow the create of optimally sized `ByteString`s with minimal buffer copying.

renderBytes :: MonadUnsafeIO m => RenderSettings -> Conduit Event m ByteString

Render a stream of `Event`s into a stream of `ByteString`s. This function wraps around `renderBuilder` and `builderToByteString`, so it produces optimally sized `ByteString`s with minimal buffer copying.

The output is UTF8 encoded.

renderText :: (MonadThrow m, MonadUnsafeIO m) => RenderSettings -> Conduit Event m Text

Render a stream of `Event`s into a stream of `ByteString`s. This function wraps around `renderBuilder`, `builderToByteString` and `renderBytes`, so it produces optimally sized `ByteString`s with minimal buffer copying.

data RenderSettings

Instances

Default RenderSettings |

def :: Default a => a

The default value for this type.

rsPretty :: RenderSettings -> Bool

rsNamespaces :: RenderSettings -> [(Text, Text)]

Defines some top level namespace definitions to be used, in the form of (prefix, namespace). This has absolutely no impact on the meaning of your documents, but can increase readability by moving commonly used namespace declarations to the top level.

rsAttrOrder :: RenderSettings -> Name -> Map Name Text -> [(Name, Text)]

Specify how to turn the unordered attributes used by the Text.XML module into an ordered list.

orderAttrs :: [(Name, [Name])] -> Name -> Map Name Text -> [(Name, Text)]

Convenience function to create an ordering function suitable for use as the value of `rsAttrOrder`. The ordering function is created from an explicit ordering of the attributes, specified as a list of tuples, as follows: In each tuple, the first component is the `Name` of an element, and the second component is a list of attributes names. When the given element is rendered, the attributes listed, when present, appear first in the given order, followed by any other attributes in arbitrary order. If an element does not appear, all of its attributes are rendered in arbitrary order.

prettify :: Monad m => Conduit Event m Event

Convert a stream of `Event`s into a prettified one, adding extra whitespace. Note that this can change the meaning of your XML.