-- 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

-- | 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

-- | 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:content</tt> element.
data AtomContent
AtomContentInlineText :: TextType -> Text -> AtomContent
AtomContentInlineXHTML :: Text -> AtomContent
AtomContentInlineOther :: Type -> Text -> AtomContent
AtomContentOutOfLine :: Type -> AtomURI -> AtomContent
type Type = 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

-- | 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: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:category</tt> element.
data AtomCategory
AtomCategory :: NonNull Text -> Text -> Text -> AtomCategory
[categoryTerm] :: AtomCategory -> NonNull Text
[categoryScheme] :: AtomCategory -> Text
[categoryLabel] :: AtomCategory -> Text

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

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

-- | XHTML special characters will be in encoded form
AtomXHTMLText :: Text -> AtomText
data TextType
TypeText :: TextType
TypeHTML :: TextType
data AtomURI
AtomURI :: (URIRef a) -> AtomURI
withAtomURI :: (forall a. URIRef a -> b) -> AtomURI -> b
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
categoryTermL :: Functor f => NonNull Text -> f NonNull Text -> AtomCategory -> f AtomCategory
categorySchemeL :: Functor f => Text -> f Text -> AtomCategory -> f AtomCategory
categoryLabelL :: Functor f => Text -> f Text -> AtomCategory -> f AtomCategory
entryAuthorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomEntry -> f AtomEntry
entryCategoriesL :: Functor f => [AtomCategory] -> f [AtomCategory] -> AtomEntry -> f AtomEntry
entryContentL :: Functor f => Maybe AtomContent -> f Maybe AtomContent -> AtomEntry -> f AtomEntry
entryContributorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomEntry -> f AtomEntry
entryIdL :: Functor f => Text -> f Text -> AtomEntry -> f AtomEntry
entryLinksL :: Functor f => [AtomLink] -> f [AtomLink] -> AtomEntry -> f AtomEntry
entryPublishedL :: Functor f => Maybe UTCTime -> f Maybe UTCTime -> AtomEntry -> f AtomEntry
entryRightsL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomEntry -> f AtomEntry
entrySourceL :: Functor f => Maybe AtomSource -> f Maybe AtomSource -> AtomEntry -> f AtomEntry
entrySummaryL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomEntry -> f AtomEntry
entryTitleL :: Functor f => AtomText -> f AtomText -> AtomEntry -> f AtomEntry
entryUpdatedL :: Functor f => UTCTime -> f UTCTime -> AtomEntry -> f AtomEntry
feedAuthorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomFeed -> f AtomFeed
feedCategoriesL :: Functor f => [AtomCategory] -> f [AtomCategory] -> AtomFeed -> f AtomFeed
feedContributorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomFeed -> f AtomFeed
feedEntriesL :: Functor f => [AtomEntry] -> f [AtomEntry] -> AtomFeed -> f AtomFeed
feedGeneratorL :: Functor f => Maybe AtomGenerator -> f Maybe AtomGenerator -> AtomFeed -> f AtomFeed
feedIconL :: Functor f => Maybe AtomURI -> f Maybe AtomURI -> AtomFeed -> f AtomFeed
feedIdL :: Functor f => Text -> f Text -> AtomFeed -> f AtomFeed
feedLinksL :: Functor f => [AtomLink] -> f [AtomLink] -> AtomFeed -> f AtomFeed
feedLogoL :: Functor f => Maybe AtomURI -> f Maybe AtomURI -> AtomFeed -> f AtomFeed
feedRightsL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomFeed -> f AtomFeed
feedSubtitleL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomFeed -> f AtomFeed
feedTitleL :: Functor f => AtomText -> f AtomText -> AtomFeed -> f AtomFeed
feedUpdatedL :: Functor f => UTCTime -> f UTCTime -> AtomFeed -> f AtomFeed
generatorUriL :: Functor f => Maybe AtomURI -> f Maybe AtomURI -> AtomGenerator -> f AtomGenerator
generatorVersionL :: Functor f => Text -> f Text -> AtomGenerator -> f AtomGenerator
generatorContentL :: Functor f => NonNull Text -> f NonNull Text -> AtomGenerator -> f AtomGenerator
linkHrefL :: Functor f => AtomURI -> f AtomURI -> AtomLink -> f AtomLink
linkRelL :: Functor f => Text -> f Text -> AtomLink -> f AtomLink
linkTypeL :: Functor f => Text -> f Text -> AtomLink -> f AtomLink
linkLangL :: Functor f => Text -> f Text -> AtomLink -> f AtomLink
linkTitleL :: Functor f => Text -> f Text -> AtomLink -> f AtomLink
linkLengthL :: Functor f => Text -> f Text -> AtomLink -> f AtomLink
personNameL :: Functor f => NonNull Text -> f NonNull Text -> AtomPerson -> f AtomPerson
personEmailL :: Functor f => Text -> f Text -> AtomPerson -> f AtomPerson
personUriL :: Functor f => Maybe AtomURI -> f Maybe AtomURI -> AtomPerson -> f AtomPerson
sourceAuthorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomSource -> f AtomSource
sourceCategoriesL :: Functor f => [AtomCategory] -> f [AtomCategory] -> AtomSource -> f AtomSource
sourceContributorsL :: Functor f => [AtomPerson] -> f [AtomPerson] -> AtomSource -> f AtomSource
sourceGeneratorL :: Functor f => Maybe AtomGenerator -> f Maybe AtomGenerator -> AtomSource -> f AtomSource
sourceIdL :: Functor f => Text -> f Text -> AtomSource -> f AtomSource
sourceLinksL :: Functor f => [AtomLink] -> f [AtomLink] -> AtomSource -> f AtomSource
sourceLogoL :: Functor f => Maybe AtomURI -> f Maybe AtomURI -> AtomSource -> f AtomSource
sourceRightsL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomSource -> f AtomSource
sourceSubtitleL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomSource -> f AtomSource
sourceTitleL :: Functor f => Maybe AtomText -> f Maybe AtomText -> AtomSource -> f AtomSource
sourceUpdatedL :: Functor f => Maybe UTCTime -> f Maybe UTCTime -> AtomSource -> f AtomSource
_AtomPlainText :: Applicative f => (TextType, Text) -> f (TextType, Text) -> AtomText -> f AtomText
_AtomXHTMLText :: Applicative f => Text -> f 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
