dublincore-xml-conduit-0.1.0.3: src/Text/XML/DublinCore/Conduit/Render.hs
{-# LANGUAGE OverloadedStrings #-}
-- | XML streaming renderers for the __Dublin Core Metadata Element Set__.
--
-- This module is meant to be imported qualified, like this:
--
-- > import qualified Text.XML.DublinCore.Conduit.Render as DC
module Text.XML.DublinCore.Conduit.Render (
renderElementContributor,
renderElementCoverage,
renderElementCreator,
renderElementDate,
renderElementDescription,
renderElementFormat,
renderElementIdentifier,
renderElementLanguage,
renderElementPublisher,
renderElementRelation,
renderElementRights,
renderElementSource,
renderElementSubject,
renderElementTitle,
renderElementType,
) where
-- {{{ Imports
import Text.XML.DublinCore
import Conduit
import Data.Text
import Data.Time.Clock
import Data.Time.LocalTime
import Data.Time.RFC3339
import Data.XML.Types
import Text.XML.Stream.Render
-- }}}
-- {{{ Utils
dcName :: Text -> Name
dcName string = Name string (Just "http://purl.org/dc/elements/1.1/") (Just namespacePrefix)
-- }}}
-- | Render a @\<dc:contributor\>@ element.
renderElementContributor :: Monad m => Text -> ConduitT () Event m ()
renderElementContributor = tag (dcName "contributor") mempty . content
-- | Render a @\<dc:coverage\>@ element.
renderElementCoverage :: Monad m => Text -> ConduitT () Event m ()
renderElementCoverage = tag (dcName "coverage") mempty . content
-- | Render a @\<dc:creator\>@ element.
renderElementCreator :: Monad m => Text -> ConduitT () Event m ()
renderElementCreator = tag (dcName "creator") mempty . content
-- | Render a @\<dc:date\>@ element.
renderElementDate :: Monad m => UTCTime -> ConduitT () Event m ()
renderElementDate = tag (dcName "date") mempty . content . formatTimeRFC3339 . utcToZonedTime utc
-- | Render a @\<dc:description\>@ element.
renderElementDescription :: Monad m => Text -> ConduitT () Event m ()
renderElementDescription = tag (dcName "description") mempty . content
-- | Render a @\<dc:format\>@ element.
renderElementFormat :: Monad m => Text -> ConduitT () Event m ()
renderElementFormat = tag (dcName "format") mempty . content
-- | Render a @\<dc:identifier\>@ element.
renderElementIdentifier :: Monad m => Text -> ConduitT () Event m ()
renderElementIdentifier = tag (dcName "identifier") mempty . content
-- | Render a @\<dc:language\>@ element.
renderElementLanguage :: Monad m => Text -> ConduitT () Event m ()
renderElementLanguage = tag (dcName "language") mempty . content
-- | Render a @\<dc:publisher\>@ element.
renderElementPublisher :: Monad m => Text -> ConduitT () Event m ()
renderElementPublisher = tag (dcName "publisher") mempty . content
-- | Render a @\<dc:relation\>@ element.
renderElementRelation :: Monad m => Text -> ConduitT () Event m ()
renderElementRelation = tag (dcName "relation") mempty . content
-- | Render a @\<dc:rights\>@ element.
renderElementRights :: Monad m => Text -> ConduitT () Event m ()
renderElementRights = tag (dcName "rights") mempty . content
-- | Render a @\<dc:source\>@ element.
renderElementSource :: Monad m => Text -> ConduitT () Event m ()
renderElementSource = tag (dcName "source") mempty . content
-- | Render a @\<dc:subject\>@ element.
renderElementSubject :: Monad m => Text -> ConduitT () Event m ()
renderElementSubject = tag (dcName "subject") mempty . content
-- | Render a @\<dc:title\>@ element.
renderElementTitle :: Monad m => Text -> ConduitT () Event m ()
renderElementTitle = tag (dcName "title") mempty . content
-- | Render a @\<dc:type\>@ element.
renderElementType :: Monad m => Text -> ConduitT () Event m ()
renderElementType = tag (dcName "type") mempty . content