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

Safe HaskellNone
LanguageHaskell98

Text.XML.Stream.Render

Contents

Description

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

Synopsis

Rendering XML files

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

Render a stream of Events into a stream of Builders. Builders are from the blaze-builder package, and allow the create of optimally sized ByteStrings with minimal buffer copying.

renderBuilderFlush :: Monad m => RenderSettings -> Conduit (Flush Event) m (Flush Builder) Source

Same as renderBuilder but allows you to flush XML stream to ensure that all events at needed point are rendered.

Since: 1.3.5

renderBytes :: (MonadBase base m, PrimMonad base) => RenderSettings -> ConduitM Event ByteString m () Source

Render a stream of Events into a stream of ByteStrings. This function wraps around renderBuilder and builderToByteString, so it produces optimally sized ByteStrings with minimal buffer copying.

The output is UTF8 encoded. renderBytes :: Monad m => RenderSettings -> Conduit Event m ByteString

renderText :: (MonadThrow m, MonadBase base m, PrimMonad base) => RenderSettings -> ConduitM Event Text m () Source

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

prettify :: Monad m => Conduit (Flush Event) m (Flush Event) Source

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

Renderer settings

def :: Default a => a

The default value for this type.

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

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)] Source

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

rsUseCDATA :: RenderSettings -> Content -> Bool Source

Determines if for a given text content the renderer should use a CDATA node.

Default: False

Since: 1.3.3

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

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.

Event rendering

tag Source

Arguments

:: Monad m 
=> Name 
-> Attributes 
-> Source m Event

Element's subnodes.

-> Source m Event 

Generate a complete XML Element.

content :: Monad m => Text -> Source m Event Source

Generate a textual EventContent.

Attribute rendering

data Attributes Source

A list of attributes.

attr Source

Arguments

:: Name

Attribute's name

-> Text

Attribute's value

-> Attributes 

Generate a single attribute.

optionalAttr :: Name -> Maybe Text -> Attributes Source

Helper function that generates a valid attribute if input isn't Nothing, or mempty otherwise.