-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Streaming parser/renderer for the Atom 1.0 standard (RFC 4287).
--   
--   Please refer to README.
@package atom-conduit
@version 0.5.0.1


-- | Atom is an XML-based Web content and metadata syndication format.
--   
--   Example:
--   
--   <pre>
--   &lt;?xml version="1.0" encoding="utf-8"?&gt;
--   &lt;feed xmlns="http://www.w3.org/2005/Atom"&gt;
--   
--     &lt;title&gt;Example Feed&lt;/title&gt;
--     &lt;link href="http://example.org/"/&gt;
--     &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
--     &lt;author&gt;
--       &lt;name&gt;John Doe&lt;/name&gt;
--     &lt;/author&gt;
--     &lt;id&gt;urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6&lt;/id&gt;
--   
--     &lt;entry&gt;
--       &lt;title&gt;Atom-Powered Robots Run Amok&lt;/title&gt;
--       &lt;link href="http://example.org/2003/12/13/atom03"/&gt;
--       &lt;id&gt;urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a&lt;/id&gt;
--       &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
--       &lt;summary&gt;Some text.&lt;/summary&gt;
--     &lt;/entry&gt;
--   
--   &lt;/feed&gt;
--   </pre>
module Text.Atom.Types
data AtomURI
AtomURI :: (URIRef a) -> AtomURI
withAtomURI :: (forall a. URIRef a -> b) -> AtomURI -> b
data TextType
TypeText :: TextType
TypeHTML :: TextType

-- | An atom text construct.
data AtomText
AtomPlainText :: TextType -> Text -> AtomText

-- | XHTML special characters will be in encoded form
AtomXHTMLText :: Text -> AtomText

-- | An atom person construct.
data AtomPerson
AtomPerson :: NonNull Text -> Text -> Maybe AtomURI -> AtomPerson
[personName] :: AtomPerson -> NonNull Text
[personEmail] :: AtomPerson -> Text
[personUri] :: AtomPerson -> Maybe AtomURI

-- | The <tt>atom:category</tt> element.
data AtomCategory
AtomCategory :: NonNull Text -> Text -> Text -> AtomCategory
[categoryTerm] :: AtomCategory -> NonNull Text
[categoryScheme] :: AtomCategory -> Text
[categoryLabel] :: AtomCategory -> Text

-- | The <tt>atom:link</tt> element.
data AtomLink
AtomLink :: AtomURI -> Text -> Text -> Text -> Text -> Text -> AtomLink
[linkHref] :: AtomLink -> AtomURI
[linkRel] :: AtomLink -> Text
[linkType] :: AtomLink -> Text
[linkLang] :: AtomLink -> Text
[linkTitle] :: AtomLink -> Text
[linkLength] :: AtomLink -> Text

-- | The <tt>atom:generator</tt> element.
data AtomGenerator
AtomGenerator :: Maybe AtomURI -> Text -> NonNull Text -> AtomGenerator
[generatorUri] :: AtomGenerator -> Maybe AtomURI
[generatorVersion] :: AtomGenerator -> Text
[generatorContent] :: AtomGenerator -> NonNull Text

-- | The <tt>atom:source</tt> element.
data AtomSource
AtomSource :: [AtomPerson] -> [AtomCategory] -> [AtomPerson] -> Maybe AtomGenerator -> Maybe AtomURI -> Text -> [AtomLink] -> Maybe AtomURI -> Maybe AtomText -> Maybe AtomText -> Maybe AtomText -> Maybe UTCTime -> AtomSource
[sourceAuthors] :: AtomSource -> [AtomPerson]
[sourceCategories] :: AtomSource -> [AtomCategory]
[sourceContributors] :: AtomSource -> [AtomPerson]
[sourceGenerator] :: AtomSource -> Maybe AtomGenerator
[sourceIcon] :: AtomSource -> Maybe AtomURI
[sourceId] :: AtomSource -> Text
[sourceLinks] :: AtomSource -> [AtomLink]
[sourceLogo] :: AtomSource -> Maybe AtomURI
[sourceRights] :: AtomSource -> Maybe AtomText
[sourceSubtitle] :: AtomSource -> Maybe AtomText
[sourceTitle] :: AtomSource -> Maybe AtomText
[sourceUpdated] :: AtomSource -> Maybe UTCTime
type Type = Text

-- | The <tt>atom:content</tt> element.
data AtomContent
AtomContentInlineText :: TextType -> Text -> AtomContent
AtomContentInlineXHTML :: Text -> AtomContent
AtomContentInlineOther :: Type -> Text -> AtomContent
AtomContentOutOfLine :: Type -> AtomURI -> AtomContent

-- | The <tt>atom:entry</tt> element.
data AtomEntry
AtomEntry :: [AtomPerson] -> [AtomCategory] -> Maybe AtomContent -> [AtomPerson] -> Text -> [AtomLink] -> Maybe UTCTime -> Maybe AtomText -> Maybe AtomSource -> Maybe AtomText -> AtomText -> UTCTime -> AtomEntry
[entryAuthors] :: AtomEntry -> [AtomPerson]
[entryCategories] :: AtomEntry -> [AtomCategory]
[entryContent] :: AtomEntry -> Maybe AtomContent
[entryContributors] :: AtomEntry -> [AtomPerson]
[entryId] :: AtomEntry -> Text
[entryLinks] :: AtomEntry -> [AtomLink]
[entryPublished] :: AtomEntry -> Maybe UTCTime
[entryRights] :: AtomEntry -> Maybe AtomText
[entrySource] :: AtomEntry -> Maybe AtomSource
[entrySummary] :: AtomEntry -> Maybe AtomText
[entryTitle] :: AtomEntry -> AtomText
[entryUpdated] :: AtomEntry -> UTCTime

-- | The <tt>atom:feed</tt> element.
data AtomFeed
AtomFeed :: [AtomPerson] -> [AtomCategory] -> [AtomPerson] -> [AtomEntry] -> Maybe AtomGenerator -> Maybe AtomURI -> Text -> [AtomLink] -> Maybe AtomURI -> Maybe AtomText -> Maybe AtomText -> AtomText -> UTCTime -> AtomFeed
[feedAuthors] :: AtomFeed -> [AtomPerson]
[feedCategories] :: AtomFeed -> [AtomCategory]
[feedContributors] :: AtomFeed -> [AtomPerson]
[feedEntries] :: AtomFeed -> [AtomEntry]
[feedGenerator] :: AtomFeed -> Maybe AtomGenerator
[feedIcon] :: AtomFeed -> Maybe AtomURI
[feedId] :: AtomFeed -> Text
[feedLinks] :: AtomFeed -> [AtomLink]
[feedLogo] :: AtomFeed -> Maybe AtomURI
[feedRights] :: AtomFeed -> Maybe AtomText
[feedSubtitle] :: AtomFeed -> Maybe AtomText
[feedTitle] :: AtomFeed -> AtomText
[feedUpdated] :: AtomFeed -> UTCTime
instance GHC.Show.Show Text.Atom.Types.TextType
instance GHC.Read.Read Text.Atom.Types.TextType
instance GHC.Generics.Generic Text.Atom.Types.TextType
instance GHC.Classes.Ord Text.Atom.Types.TextType
instance GHC.Classes.Eq Text.Atom.Types.TextType
instance GHC.Classes.Eq Text.Atom.Types.AtomText
instance GHC.Classes.Ord Text.Atom.Types.AtomText
instance GHC.Generics.Generic Text.Atom.Types.AtomText
instance GHC.Read.Read Text.Atom.Types.AtomText
instance GHC.Show.Show Text.Atom.Types.AtomText
instance GHC.Classes.Eq Text.Atom.Types.AtomPerson
instance GHC.Classes.Ord Text.Atom.Types.AtomPerson
instance GHC.Generics.Generic Text.Atom.Types.AtomPerson
instance GHC.Show.Show Text.Atom.Types.AtomPerson
instance GHC.Classes.Eq Text.Atom.Types.AtomCategory
instance GHC.Classes.Ord Text.Atom.Types.AtomCategory
instance GHC.Generics.Generic Text.Atom.Types.AtomCategory
instance GHC.Read.Read Text.Atom.Types.AtomCategory
instance GHC.Show.Show Text.Atom.Types.AtomCategory
instance GHC.Classes.Eq Text.Atom.Types.AtomLink
instance GHC.Classes.Ord Text.Atom.Types.AtomLink
instance GHC.Generics.Generic Text.Atom.Types.AtomLink
instance GHC.Show.Show Text.Atom.Types.AtomLink
instance GHC.Classes.Eq Text.Atom.Types.AtomGenerator
instance GHC.Classes.Ord Text.Atom.Types.AtomGenerator
instance GHC.Generics.Generic Text.Atom.Types.AtomGenerator
instance GHC.Show.Show Text.Atom.Types.AtomGenerator
instance GHC.Classes.Eq Text.Atom.Types.AtomSource
instance GHC.Classes.Ord Text.Atom.Types.AtomSource
instance GHC.Generics.Generic Text.Atom.Types.AtomSource
instance GHC.Show.Show Text.Atom.Types.AtomSource
instance GHC.Classes.Eq Text.Atom.Types.AtomContent
instance GHC.Classes.Ord Text.Atom.Types.AtomContent
instance GHC.Generics.Generic Text.Atom.Types.AtomContent
instance GHC.Show.Show Text.Atom.Types.AtomContent
instance GHC.Classes.Eq Text.Atom.Types.AtomEntry
instance GHC.Classes.Ord Text.Atom.Types.AtomEntry
instance GHC.Generics.Generic Text.Atom.Types.AtomEntry
instance GHC.Show.Show Text.Atom.Types.AtomEntry
instance GHC.Classes.Eq Text.Atom.Types.AtomFeed
instance GHC.Classes.Ord Text.Atom.Types.AtomFeed
instance GHC.Generics.Generic Text.Atom.Types.AtomFeed
instance GHC.Show.Show Text.Atom.Types.AtomFeed
instance GHC.Classes.Eq Text.Atom.Types.AtomURI
instance GHC.Classes.Ord Text.Atom.Types.AtomURI
instance GHC.Show.Show Text.Atom.Types.AtomURI

module Text.Atom.Lens
categoryLabelL :: Functor f => (Text -> f Text) -> AtomCategory -> f AtomCategory
categorySchemeL :: Functor f => (Text -> f Text) -> AtomCategory -> f AtomCategory
categoryTermL :: Functor f => (NonNull Text -> f NonNull Text) -> AtomCategory -> f AtomCategory
entryUpdatedL :: Functor f => (UTCTime -> f UTCTime) -> AtomEntry -> f AtomEntry
entryTitleL :: Functor f => (AtomText -> f AtomText) -> AtomEntry -> f AtomEntry
entrySummaryL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomEntry -> f AtomEntry
entrySourceL :: Functor f => (Maybe AtomSource -> f Maybe AtomSource) -> AtomEntry -> f AtomEntry
entryRightsL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomEntry -> f AtomEntry
entryPublishedL :: Functor f => (Maybe UTCTime -> f Maybe UTCTime) -> AtomEntry -> f AtomEntry
entryLinksL :: Functor f => ([AtomLink] -> f [AtomLink]) -> AtomEntry -> f AtomEntry
entryIdL :: Functor f => (Text -> f Text) -> AtomEntry -> f AtomEntry
entryContributorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomEntry -> f AtomEntry
entryContentL :: Functor f => (Maybe AtomContent -> f Maybe AtomContent) -> AtomEntry -> f AtomEntry
entryCategoriesL :: Functor f => ([AtomCategory] -> f [AtomCategory]) -> AtomEntry -> f AtomEntry
entryAuthorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomEntry -> f AtomEntry
feedUpdatedL :: Functor f => (UTCTime -> f UTCTime) -> AtomFeed -> f AtomFeed
feedTitleL :: Functor f => (AtomText -> f AtomText) -> AtomFeed -> f AtomFeed
feedSubtitleL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomFeed -> f AtomFeed
feedRightsL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomFeed -> f AtomFeed
feedLogoL :: Functor f => (Maybe AtomURI -> f Maybe AtomURI) -> AtomFeed -> f AtomFeed
feedLinksL :: Functor f => ([AtomLink] -> f [AtomLink]) -> AtomFeed -> f AtomFeed
feedIdL :: Functor f => (Text -> f Text) -> AtomFeed -> f AtomFeed
feedIconL :: Functor f => (Maybe AtomURI -> f Maybe AtomURI) -> AtomFeed -> f AtomFeed
feedGeneratorL :: Functor f => (Maybe AtomGenerator -> f Maybe AtomGenerator) -> AtomFeed -> f AtomFeed
feedEntriesL :: Functor f => ([AtomEntry] -> f [AtomEntry]) -> AtomFeed -> f AtomFeed
feedContributorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomFeed -> f AtomFeed
feedCategoriesL :: Functor f => ([AtomCategory] -> f [AtomCategory]) -> AtomFeed -> f AtomFeed
feedAuthorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomFeed -> f AtomFeed
generatorContentL :: Functor f => (NonNull Text -> f NonNull Text) -> AtomGenerator -> f AtomGenerator
generatorVersionL :: Functor f => (Text -> f Text) -> AtomGenerator -> f AtomGenerator
generatorUriL :: Functor f => (Maybe AtomURI -> f Maybe AtomURI) -> AtomGenerator -> f AtomGenerator
linkLengthL :: Functor f => (Text -> f Text) -> AtomLink -> f AtomLink
linkTitleL :: Functor f => (Text -> f Text) -> AtomLink -> f AtomLink
linkLangL :: Functor f => (Text -> f Text) -> AtomLink -> f AtomLink
linkTypeL :: Functor f => (Text -> f Text) -> AtomLink -> f AtomLink
linkRelL :: Functor f => (Text -> f Text) -> AtomLink -> f AtomLink
linkHrefL :: Functor f => (AtomURI -> f AtomURI) -> AtomLink -> f AtomLink
personUriL :: Functor f => (Maybe AtomURI -> f Maybe AtomURI) -> AtomPerson -> f AtomPerson
personEmailL :: Functor f => (Text -> f Text) -> AtomPerson -> f AtomPerson
personNameL :: Functor f => (NonNull Text -> f NonNull Text) -> AtomPerson -> f AtomPerson
sourceUpdatedL :: Functor f => (Maybe UTCTime -> f Maybe UTCTime) -> AtomSource -> f AtomSource
sourceTitleL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomSource -> f AtomSource
sourceSubtitleL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomSource -> f AtomSource
sourceRightsL :: Functor f => (Maybe AtomText -> f Maybe AtomText) -> AtomSource -> f AtomSource
sourceLogoL :: Functor f => (Maybe AtomURI -> f Maybe AtomURI) -> AtomSource -> f AtomSource
sourceLinksL :: Functor f => ([AtomLink] -> f [AtomLink]) -> AtomSource -> f AtomSource
sourceIdL :: Functor f => (Text -> f Text) -> AtomSource -> f AtomSource
sourceGeneratorL :: Functor f => (Maybe AtomGenerator -> f Maybe AtomGenerator) -> AtomSource -> f AtomSource
sourceContributorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomSource -> f AtomSource
sourceCategoriesL :: Functor f => ([AtomCategory] -> f [AtomCategory]) -> AtomSource -> f AtomSource
sourceAuthorsL :: Functor f => ([AtomPerson] -> f [AtomPerson]) -> AtomSource -> f AtomSource
_AtomXHTMLText :: Applicative f => (Text -> f Text) -> AtomText -> f AtomText
_AtomPlainText :: Applicative f => ((TextType, Text) -> f (TextType, Text)) -> AtomText -> f AtomText


-- | Streaming renderers for the Atom 1.0 standard.
module Text.Atom.Conduit.Render

-- | Render the top-level <tt>atom:feed</tt> element.
renderAtomFeed :: (Monad m) => AtomFeed -> Source m Event

-- | Render an <tt>atom:entry</tt> element.
renderAtomEntry :: (Monad m) => AtomEntry -> Source m Event

-- | Render an <tt>atom:content</tt> element.
renderAtomContent :: (Monad m) => AtomContent -> Source m Event

-- | Render an <tt>atom:source</tt> element.
renderAtomSource :: (Monad m) => AtomSource -> Source m Event

-- | Render an <tt>atom:generator</tt> element.
renderAtomGenerator :: (Monad m) => AtomGenerator -> Source m Event

-- | Render an <tt>atom:link</tt> element.
renderAtomLink :: (Monad m) => AtomLink -> Source m Event

-- | Render an <tt>atom:category</tt> element.
renderAtomCategory :: (Monad m) => AtomCategory -> Source m Event

-- | Render an atom person construct.
renderAtomPerson :: (Monad m) => Text -> AtomPerson -> Source m Event

-- | Render an atom text construct.
renderAtomText :: (Monad m) => Text -> AtomText -> Source m Event


-- | Streaming parsers for the Atom 1.0 standard.
module Text.Atom.Conduit.Parse

-- | Parse an <tt>atom:feed</tt> element.
atomFeed :: MonadThrow m => ConduitM Event o m (Maybe AtomFeed)

-- | Parse an <tt>atom:entry</tt> element.
atomEntry :: MonadThrow m => ConduitM Event o m (Maybe AtomEntry)

-- | Parse an <tt>atom:content</tt> element.
atomContent :: MonadThrow m => ConduitM Event o m (Maybe AtomContent)

-- | Parse an <tt>atom:category</tt> element. Example:
--   
--   <pre>
--   &lt;category term="sports"/&gt;
--   </pre>
atomCategory :: MonadThrow m => ConduitM Event o m (Maybe AtomCategory)

-- | Parse an <tt>atom:link</tt> element. Examples:
--   
--   <pre>
--   &lt;link rel="self" href="/feed" /&gt;
--   </pre>
--   
--   <pre>
--   &lt;link rel="alternate" href="/blog/1234"/&gt;
--   </pre>
atomLink :: MonadThrow m => ConduitM Event o m (Maybe AtomLink)

-- | Parse an <tt>atom:generator</tt> element. Example:
--   
--   <pre>
--   &lt;generator uri="/myblog.php" version="1.0"&gt;
--     Example Toolkit
--   &lt;/generator&gt;
--   </pre>
atomGenerator :: MonadThrow m => ConduitM Event o m (Maybe AtomGenerator)

-- | Parse an <tt>atom:source</tt> element. Example:
--   
--   <pre>
--   &lt;source&gt;
--     &lt;id&gt;http://example.org/&lt;/id&gt;
--     &lt;title&gt;Fourty-Two&lt;/title&gt;
--     &lt;updated&gt;2003-12-13T18:30:02Z&lt;/updated&gt;
--     &lt;rights&gt;© 2005 Example, Inc.&lt;/rights&gt;
--   &lt;/source&gt;
--   </pre>
atomSource :: MonadThrow m => ConduitM Event o m (Maybe AtomSource)

-- | Parse an Atom person construct. Example:
--   
--   <pre>
--   &lt;author&gt;
--     &lt;name&gt;John Doe&lt;/name&gt;
--     &lt;email&gt;JohnDoe@example.com&lt;/email&gt;
--     &lt;uri&gt;http://example.com/~johndoe&lt;/uri&gt;
--   &lt;/author&gt;
--   </pre>
atomPerson :: MonadThrow m => Text -> ConduitM Event o m (Maybe AtomPerson)

-- | Parse an Atom text construct. Examples:
--   
--   <pre>
--   &lt;title type="text"&gt;AT&amp;amp;T bought by SBC!&lt;/title&gt;
--   </pre>
--   
--   <pre>
--   &lt;title type="html"&gt;
--     AT&amp;amp;amp;T bought &amp;lt;b&amp;gt;by SBC&amp;lt;/b&amp;gt;!
--   &lt;/title&gt;
--   </pre>
--   
--   <pre>
--   &lt;title type="xhtml"&gt;
--     &lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
--       AT&amp;amp;T bought &lt;b&gt;by SBC&lt;/b&gt;!
--     &lt;/div&gt;
--   &lt;/title&gt;
--   </pre>
atomText :: MonadThrow m => Text -> ConduitM Event o m (Maybe AtomText)
instance GHC.Classes.Eq Text.Atom.Conduit.Parse.AtomException
instance GHC.Show.Show Text.Atom.Conduit.Parse.AtomException
instance GHC.Exception.Exception Text.Atom.Conduit.Parse.AtomException
