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


-- | Streaming parser/renderer for the RSS standard.
--   
--   Cf README file.
@package rss-conduit
@version 0.4.2.1


-- | RSS is an XML dialect for Web content syndication.
--   
--   Example:
--   
--   <pre>
--   &lt;?xml version="1.0"?&gt;
--   &lt;rss version="2.0"&gt;
--      &lt;channel&gt;
--         &lt;title&gt;Liftoff News&lt;/title&gt;
--         &lt;link&gt;http://liftoff.msfc.nasa.gov/&lt;/link&gt;
--         &lt;description&gt;Liftoff to Space Exploration.&lt;/description&gt;
--         &lt;language&gt;en-us&lt;/language&gt;
--         &lt;pubDate&gt;Tue, 10 Jun 2003 04:00:00 GMT&lt;/pubDate&gt;
--         &lt;lastBuildDate&gt;Tue, 10 Jun 2003 09:41:01 GMT&lt;/lastBuildDate&gt;
--         &lt;docs&gt;http://blogs.law.harvard.edu/tech/rss&lt;/docs&gt;
--         &lt;generator&gt;Weblog Editor 2.0&lt;/generator&gt;
--         &lt;managingEditor&gt;editor@example.com&lt;/managingEditor&gt;
--         &lt;webMaster&gt;webmaster@example.com&lt;/webMaster&gt;
--         &lt;item&gt;
--            &lt;title&gt;Star City&lt;/title&gt;
--            &lt;link&gt;http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp&lt;/link&gt;
--            &lt;description&gt;How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's &amp;lt;a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm"&amp;gt;Star City&amp;lt;/a&amp;gt;.&lt;/description&gt;
--            &lt;pubDate&gt;Tue, 03 Jun 2003 09:39:21 GMT&lt;/pubDate&gt;
--            &lt;guid&gt;http://liftoff.msfc.nasa.gov/2003/06/03.html#item573&lt;/guid&gt;
--         &lt;/item&gt;
--      &lt;/channel&gt;
--   &lt;/rss&gt;
--   </pre>
module Text.RSS.Types
data RssException
InvalidBool :: Text -> RssException
InvalidDay :: Text -> RssException
InvalidHour :: Int -> RssException
InvalidInt :: Text -> RssException
InvalidURI :: URIParseError -> RssException
InvalidVersion :: Text -> RssException
InvalidProtocol :: Text -> RssException
InvalidTime :: Text -> RssException
MissingElement :: Text -> RssException
data RssURI
RssURI :: (URIRef a) -> RssURI
withRssURI :: (forall a. URIRef a -> b) -> RssURI -> b

-- | The <tt>&lt;category&gt;</tt> element.
data RssCategory
RssCategory :: Text -> Text -> RssCategory
[categoryDomain] :: RssCategory -> Text
[categoryName] :: RssCategory -> Text

-- | The <tt>&lt;enclosure&gt;</tt> element.
data RssEnclosure
RssEnclosure :: RssURI -> Int -> Text -> RssEnclosure
[enclosureUrl] :: RssEnclosure -> RssURI
[enclosureLength] :: RssEnclosure -> Int
[enclosureType] :: RssEnclosure -> Text

-- | The <tt>&lt;source&gt;</tt> element.
data RssSource
RssSource :: RssURI -> Text -> RssSource
[sourceUrl] :: RssSource -> RssURI
[sourceName] :: RssSource -> Text

-- | The <tt>&lt;guid&gt;</tt> element.
data RssGuid
GuidText :: Text -> RssGuid
GuidUri :: RssURI -> RssGuid

-- | The <tt>&lt;item&gt;</tt> element.
--   
--   This type is open to extensions.
data RssItem (extensions :: [*])
RssItem :: Text -> Maybe RssURI -> Text -> Text -> [RssCategory] -> Maybe RssURI -> [RssEnclosure] -> Maybe RssGuid -> Maybe UTCTime -> Maybe RssSource -> RssItemExtensions extensions -> RssItem
[itemTitle] :: RssItem -> Text
[itemLink] :: RssItem -> Maybe RssURI
[itemDescription] :: RssItem -> Text
[itemAuthor] :: RssItem -> Text
[itemCategories] :: RssItem -> [RssCategory]
[itemComments] :: RssItem -> Maybe RssURI
[itemEnclosure] :: RssItem -> [RssEnclosure]
[itemGuid] :: RssItem -> Maybe RssGuid
[itemPubDate] :: RssItem -> Maybe UTCTime
[itemSource] :: RssItem -> Maybe RssSource
[itemExtensions] :: RssItem -> RssItemExtensions extensions

-- | Alias for <a>RssItem</a> with no RSS extensions.
type RssItem' = RssItem '[]

-- | The <tt>&lt;textInput&gt;</tt> element.
data RssTextInput
RssTextInput :: Text -> Text -> Text -> RssURI -> RssTextInput
[textInputTitle] :: RssTextInput -> Text
[textInputDescription] :: RssTextInput -> Text
[textInputName] :: RssTextInput -> Text
[textInputLink] :: RssTextInput -> RssURI
data CloudProtocol
ProtocolXmlRpc :: CloudProtocol
ProtocolSoap :: CloudProtocol
ProtocolHttpPost :: CloudProtocol

-- | The <tt>&lt;cloud&gt;</tt> element.
data RssCloud
RssCloud :: RssURI -> Text -> CloudProtocol -> RssCloud
[cloudUri] :: RssCloud -> RssURI
[cloudRegisterProcedure] :: RssCloud -> Text
[cloudProtocol] :: RssCloud -> CloudProtocol

-- | The <tt>&lt;image&gt;</tt> element.
data RssImage
RssImage :: RssURI -> Text -> RssURI -> Maybe Int -> Maybe Int -> Text -> RssImage
[imageUri] :: RssImage -> RssURI
[imageTitle] :: RssImage -> Text
[imageLink] :: RssImage -> RssURI
[imageWidth] :: RssImage -> Maybe Int
[imageHeight] :: RssImage -> Maybe Int
[imageDescription] :: RssImage -> Text
newtype Hour
Hour :: Int -> Hour

-- | Smart constructor for <a>Hour</a>
asHour :: MonadThrow m => Int -> m Hour
data Day
Monday :: Day
Tuesday :: Day
Wednesday :: Day
Thursday :: Day
Friday :: Day
Saturday :: Day
Sunday :: Day

-- | Basic parser for <a>Day</a>.
asDay :: MonadThrow m => Text -> m Day

-- | The <tt>&lt;rss&gt;</tt> element.
--   
--   This type is open to extensions.
data RssDocument (extensions :: [*])
RssDocument :: Version -> Text -> RssURI -> Text -> [RssItem extensions] -> Text -> Text -> Text -> Text -> Maybe UTCTime -> Maybe UTCTime -> [RssCategory] -> Text -> Maybe RssURI -> Maybe RssCloud -> Maybe Int -> Maybe RssImage -> Text -> Maybe RssTextInput -> Set Hour -> Set Day -> RssChannelExtensions extensions -> RssDocument
[documentVersion] :: RssDocument -> Version
[channelTitle] :: RssDocument -> Text
[channelLink] :: RssDocument -> RssURI
[channelDescription] :: RssDocument -> Text
[channelItems] :: RssDocument -> [RssItem extensions]
[channelLanguage] :: RssDocument -> Text
[channelCopyright] :: RssDocument -> Text
[channelManagingEditor] :: RssDocument -> Text
[channelWebmaster] :: RssDocument -> Text
[channelPubDate] :: RssDocument -> Maybe UTCTime
[channelLastBuildDate] :: RssDocument -> Maybe UTCTime
[channelCategories] :: RssDocument -> [RssCategory]
[channelGenerator] :: RssDocument -> Text
[channelDocs] :: RssDocument -> Maybe RssURI
[channelCloud] :: RssDocument -> Maybe RssCloud
[channelTtl] :: RssDocument -> Maybe Int
[channelImage] :: RssDocument -> Maybe RssImage
[channelRating] :: RssDocument -> Text
[channelTextInput] :: RssDocument -> Maybe RssTextInput
[channelSkipHours] :: RssDocument -> Set Hour
[channelSkipDays] :: RssDocument -> Set Day
[channelExtensions] :: RssDocument -> RssChannelExtensions extensions

-- | Alias for <a>RssDocument</a> with no RSS extensions.
type RssDocument' = RssDocument '[]

-- | <tt>&lt;channel&gt;</tt> extension type.

-- | <tt>&lt;item&gt;</tt> extension type.

-- | Combination of multiple <tt>&lt;channel&gt;</tt> extensions.

-- | Combination of multiple <tt>&lt;item&gt;</tt> extensions.
instance GHC.Show.Show Text.RSS.Types.Day
instance GHC.Read.Read Text.RSS.Types.Day
instance GHC.Classes.Ord Text.RSS.Types.Day
instance GHC.Generics.Generic Text.RSS.Types.Day
instance GHC.Classes.Eq Text.RSS.Types.Day
instance GHC.Enum.Enum Text.RSS.Types.Day
instance GHC.Enum.Bounded Text.RSS.Types.Day
instance GHC.Show.Show Text.RSS.Types.Hour
instance GHC.Read.Read Text.RSS.Types.Hour
instance GHC.Classes.Ord Text.RSS.Types.Hour
instance GHC.Generics.Generic Text.RSS.Types.Hour
instance GHC.Classes.Eq Text.RSS.Types.Hour
instance GHC.Show.Show Text.RSS.Types.CloudProtocol
instance GHC.Read.Read Text.RSS.Types.CloudProtocol
instance GHC.Classes.Ord Text.RSS.Types.CloudProtocol
instance GHC.Generics.Generic Text.RSS.Types.CloudProtocol
instance GHC.Classes.Eq Text.RSS.Types.CloudProtocol
instance GHC.Show.Show Text.RSS.Types.RssGuid
instance GHC.Classes.Ord Text.RSS.Types.RssGuid
instance GHC.Generics.Generic Text.RSS.Types.RssGuid
instance GHC.Classes.Eq Text.RSS.Types.RssGuid
instance GHC.Classes.Eq Text.RSS.Types.RssException
instance GHC.Generics.Generic Text.RSS.Types.RssException
instance GHC.Read.Read Text.RSS.Types.RssException
instance GHC.Show.Show Text.RSS.Types.RssException
instance GHC.Classes.Eq Text.RSS.Types.RssCategory
instance GHC.Generics.Generic Text.RSS.Types.RssCategory
instance GHC.Classes.Ord Text.RSS.Types.RssCategory
instance GHC.Show.Show Text.RSS.Types.RssCategory
instance GHC.Classes.Eq Text.RSS.Types.RssEnclosure
instance GHC.Generics.Generic Text.RSS.Types.RssEnclosure
instance GHC.Classes.Ord Text.RSS.Types.RssEnclosure
instance GHC.Show.Show Text.RSS.Types.RssEnclosure
instance GHC.Classes.Eq Text.RSS.Types.RssSource
instance GHC.Generics.Generic Text.RSS.Types.RssSource
instance GHC.Classes.Ord Text.RSS.Types.RssSource
instance GHC.Show.Show Text.RSS.Types.RssSource
instance GHC.Classes.Eq (Text.RSS.Types.RssItemExtensions e) => GHC.Classes.Eq (Text.RSS.Types.RssItem e)
instance GHC.Generics.Generic (Text.RSS.Types.RssItemExtensions e) => GHC.Generics.Generic (Text.RSS.Types.RssItem e)
instance GHC.Classes.Ord (Text.RSS.Types.RssItemExtensions e) => GHC.Classes.Ord (Text.RSS.Types.RssItem e)
instance GHC.Show.Show (Text.RSS.Types.RssItemExtensions e) => GHC.Show.Show (Text.RSS.Types.RssItem e)
instance GHC.Classes.Eq Text.RSS.Types.RssTextInput
instance GHC.Generics.Generic Text.RSS.Types.RssTextInput
instance GHC.Classes.Ord Text.RSS.Types.RssTextInput
instance GHC.Show.Show Text.RSS.Types.RssTextInput
instance GHC.Classes.Eq Text.RSS.Types.RssCloud
instance GHC.Generics.Generic Text.RSS.Types.RssCloud
instance GHC.Classes.Ord Text.RSS.Types.RssCloud
instance GHC.Show.Show Text.RSS.Types.RssCloud
instance GHC.Classes.Eq Text.RSS.Types.RssImage
instance GHC.Generics.Generic Text.RSS.Types.RssImage
instance GHC.Classes.Ord Text.RSS.Types.RssImage
instance GHC.Show.Show Text.RSS.Types.RssImage
instance (GHC.Classes.Eq (Text.RSS.Types.RssChannelExtensions e), GHC.Classes.Eq (Text.RSS.Types.RssItemExtensions e)) => GHC.Classes.Eq (Text.RSS.Types.RssDocument e)
instance (GHC.Generics.Generic (Text.RSS.Types.RssChannelExtensions e), GHC.Generics.Generic (Text.RSS.Types.RssItemExtensions e)) => GHC.Generics.Generic (Text.RSS.Types.RssDocument e)
instance (GHC.Classes.Ord (Text.RSS.Types.RssChannelExtensions e), GHC.Classes.Ord (Text.RSS.Types.RssItemExtensions e)) => GHC.Classes.Ord (Text.RSS.Types.RssDocument e)
instance (GHC.Show.Show (Text.RSS.Types.RssChannelExtensions e), GHC.Show.Show (Text.RSS.Types.RssItemExtensions e)) => GHC.Show.Show (Text.RSS.Types.RssDocument e)
instance GHC.Classes.Eq (Data.Vinyl.Core.Rec Text.RSS.Types.RssChannelExtension a) => GHC.Classes.Eq (Text.RSS.Types.RssChannelExtensions a)
instance GHC.Generics.Generic (Data.Vinyl.Core.Rec Text.RSS.Types.RssChannelExtension a) => GHC.Generics.Generic (Text.RSS.Types.RssChannelExtensions a)
instance GHC.Classes.Ord (Data.Vinyl.Core.Rec Text.RSS.Types.RssChannelExtension a) => GHC.Classes.Ord (Text.RSS.Types.RssChannelExtensions a)
instance GHC.Read.Read (Data.Vinyl.Core.Rec Text.RSS.Types.RssChannelExtension a) => GHC.Read.Read (Text.RSS.Types.RssChannelExtensions a)
instance GHC.Show.Show (Data.Vinyl.Core.Rec Text.RSS.Types.RssChannelExtension a) => GHC.Show.Show (Text.RSS.Types.RssChannelExtensions a)
instance GHC.Classes.Eq (Data.Vinyl.Core.Rec Text.RSS.Types.RssItemExtension a) => GHC.Classes.Eq (Text.RSS.Types.RssItemExtensions a)
instance GHC.Generics.Generic (Data.Vinyl.Core.Rec Text.RSS.Types.RssItemExtension a) => GHC.Generics.Generic (Text.RSS.Types.RssItemExtensions a)
instance GHC.Classes.Ord (Data.Vinyl.Core.Rec Text.RSS.Types.RssItemExtension a) => GHC.Classes.Ord (Text.RSS.Types.RssItemExtensions a)
instance GHC.Read.Read (Data.Vinyl.Core.Rec Text.RSS.Types.RssItemExtension a) => GHC.Read.Read (Text.RSS.Types.RssItemExtensions a)
instance GHC.Show.Show (Data.Vinyl.Core.Rec Text.RSS.Types.RssItemExtension a) => GHC.Show.Show (Text.RSS.Types.RssItemExtensions a)
instance GHC.Enum.Bounded Text.RSS.Types.Hour
instance GHC.Enum.Enum Text.RSS.Types.Hour
instance GHC.Classes.Eq Text.RSS.Types.RssURI
instance GHC.Classes.Ord Text.RSS.Types.RssURI
instance GHC.Show.Show Text.RSS.Types.RssURI
instance GHC.Exception.Exception Text.RSS.Types.RssException

module Text.RSS.Lens
categoryNameL :: Functor f => (Text -> f Text) -> RssCategory -> f RssCategory
categoryDomainL :: Functor f => (Text -> f Text) -> RssCategory -> f RssCategory
enclosureTypeL :: Functor f => (Text -> f Text) -> RssEnclosure -> f RssEnclosure
enclosureLengthL :: Functor f => (Int -> f Int) -> RssEnclosure -> f RssEnclosure
enclosureUrlL :: Functor f => (RssURI -> f RssURI) -> RssEnclosure -> f RssEnclosure
sourceNameL :: Functor f => (Text -> f Text) -> RssSource -> f RssSource
sourceUrlL :: Functor f => (RssURI -> f RssURI) -> RssSource -> f RssSource
itemExtensionsL :: Functor f => (RssItemExtensions extensions1 -> f RssItemExtensions extensions2) -> RssItem extensions1 -> f RssItem extensions2
itemSourceL :: Functor f => (Maybe RssSource -> f Maybe RssSource) -> RssItem extensions -> f RssItem extensions
itemPubDateL :: Functor f => (Maybe UTCTime -> f Maybe UTCTime) -> RssItem extensions -> f RssItem extensions
itemGuidL :: Functor f => (Maybe RssGuid -> f Maybe RssGuid) -> RssItem extensions -> f RssItem extensions
itemCommentsL :: Functor f => (Maybe RssURI -> f Maybe RssURI) -> RssItem extensions -> f RssItem extensions
itemAuthorL :: Functor f => (Text -> f Text) -> RssItem extensions -> f RssItem extensions
itemDescriptionL :: Functor f => (Text -> f Text) -> RssItem extensions -> f RssItem extensions
itemLinkL :: Functor f => (Maybe RssURI -> f Maybe RssURI) -> RssItem extensions -> f RssItem extensions
itemTitleL :: Functor f => (Text -> f Text) -> RssItem extensions -> f RssItem extensions
itemCategoriesL :: Traversal' (RssItem e) RssCategory
itemEnclosureL :: Traversal' (RssItem e) RssEnclosure
itemExtensionL :: SingI a => RElem a e (RIndex a e) => Lens' (RssItem e) (RssItemExtension a)
textInputLinkL :: Functor f => (RssURI -> f RssURI) -> RssTextInput -> f RssTextInput
textInputNameL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
textInputDescriptionL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
textInputTitleL :: Functor f => (Text -> f Text) -> RssTextInput -> f RssTextInput
cloudProtocolL :: Functor f => (CloudProtocol -> f CloudProtocol) -> RssCloud -> f RssCloud
cloudRegisterProcedureL :: Functor f => (Text -> f Text) -> RssCloud -> f RssCloud
cloudUriL :: Functor f => (RssURI -> f RssURI) -> RssCloud -> f RssCloud
imageDescriptionL :: Functor f => (Text -> f Text) -> RssImage -> f RssImage
imageHeightL :: Functor f => (Maybe Int -> f Maybe Int) -> RssImage -> f RssImage
imageWidthL :: Functor f => (Maybe Int -> f Maybe Int) -> RssImage -> f RssImage
imageLinkL :: Functor f => (RssURI -> f RssURI) -> RssImage -> f RssImage
imageTitleL :: Functor f => (Text -> f Text) -> RssImage -> f RssImage
imageUriL :: Functor f => (RssURI -> f RssURI) -> RssImage -> f RssImage
channelExtensionsL :: Functor f => (RssChannelExtensions extensions -> f RssChannelExtensions extensions) -> RssDocument extensions -> f RssDocument extensions
channelSkipDaysL :: Functor f => (Set Day -> f Set Day) -> RssDocument extensions -> f RssDocument extensions
channelSkipHoursL :: Functor f => (Set Hour -> f Set Hour) -> RssDocument extensions -> f RssDocument extensions
channelTextInputL :: Functor f => (Maybe RssTextInput -> f Maybe RssTextInput) -> RssDocument extensions -> f RssDocument extensions
channelRatingL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelImageL :: Functor f => (Maybe RssImage -> f Maybe RssImage) -> RssDocument extensions -> f RssDocument extensions
channelTtlL :: Functor f => (Maybe Int -> f Maybe Int) -> RssDocument extensions -> f RssDocument extensions
channelCloudL :: Functor f => (Maybe RssCloud -> f Maybe RssCloud) -> RssDocument extensions -> f RssDocument extensions
channelDocsL :: Functor f => (Maybe RssURI -> f Maybe RssURI) -> RssDocument extensions -> f RssDocument extensions
channelGeneratorL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelLastBuildDateL :: Functor f => (Maybe UTCTime -> f Maybe UTCTime) -> RssDocument extensions -> f RssDocument extensions
channelPubDateL :: Functor f => (Maybe UTCTime -> f Maybe UTCTime) -> RssDocument extensions -> f RssDocument extensions
channelWebmasterL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelManagingEditorL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelCopyrightL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelLanguageL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelDescriptionL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
channelLinkL :: Functor f => (RssURI -> f RssURI) -> RssDocument extensions -> f RssDocument extensions
channelTitleL :: Functor f => (Text -> f Text) -> RssDocument extensions -> f RssDocument extensions
documentVersionL :: Functor f => (Version -> f Version) -> RssDocument extensions -> f RssDocument extensions
channelItemsL :: Traversal' (RssDocument e) (RssItem e)
channelCategoriesL :: Traversal' (RssDocument e) RssCategory
channelExtensionL :: SingI a => RElem a e (RIndex a e) => Lens' (RssDocument e) (RssChannelExtension a)


-- | Support for RSS extensions. Cf specification at
--   <a>http://web.resource.org/rss/1.0/modules/</a>.
module Text.RSS.Extensions

-- | Class of RSS extensions that can be parsed.
class ParseRssExtension a

-- | This parser will be fed with all <a>Event</a>s within the
--   <tt>&lt;channel&gt;</tt> element. Therefore, it is expected to ignore
--   <a>Event</a>s unrelated to the RSS extension.
parseRssChannelExtension :: (ParseRssExtension a, MonadThrow m) => ConduitM Event o m (RssChannelExtension a)

-- | This parser will be fed with all <a>Event</a>s within the
--   <tt>&lt;item&gt;</tt> element. Therefore, it is expected to ignore
--   <a>Event</a>s unrelated to the RSS extension.
parseRssItemExtension :: (ParseRssExtension a, MonadThrow m) => ConduitM Event o m (RssItemExtension a)

-- | Requirement on a list of extension tags to be able to parse and
--   combine them.
type ParseRssExtensions (e :: [*]) = (AllConstrained ParseRssExtension e, SingI e)

-- | Parse a combination of RSS extensions at <tt>&lt;channel&gt;</tt>
--   level.
parseRssChannelExtensions :: ParseRssExtensions e => MonadThrow m => ConduitM Event o m (RssChannelExtensions e)

-- | Parse a combination of RSS extensions at <tt>&lt;item&gt;</tt> level.
parseRssItemExtensions :: ParseRssExtensions e => MonadThrow m => ConduitM Event o m (RssItemExtensions e)

-- | Class of RSS extensions that can be rendered.
class RenderRssExtension e

-- | Render extension for the <tt>&lt;channel&gt;</tt> element.
renderRssChannelExtension :: (RenderRssExtension e, Monad m) => RssChannelExtension e -> Source m Event

-- | Render extension for the <tt>&lt;item&gt;</tt> element.
renderRssItemExtension :: (RenderRssExtension e, Monad m) => RssItemExtension e -> Source m Event

-- | Requirement on a list of extension tags to be able to render them.
type RenderRssExtensions (e :: [*]) = (AllConstrained RenderRssExtension e)

-- | Render a set of <tt>&lt;channel&gt;</tt> extensions.
renderRssChannelExtensions :: Monad m => RenderRssExtensions e => RssChannelExtensions e -> Source m Event

-- | Render a set of <tt>&lt;item&gt;</tt> extensions.
renderRssItemExtensions :: Monad m => RenderRssExtensions e => RssItemExtensions e -> Source m Event


-- | <b>Syndication</b> module for RSS. Cf specification at
--   <a>http://web.resource.org/rss/1.0/modules/syndication/</a>.
module Text.RSS.Extensions.Syndication

-- | <b>Syndication</b> tag type.
data SyndicationModule :: *

-- | <tt>&lt;channel&gt;</tt> extension type.

-- | <tt>&lt;item&gt;</tt> extension type.

-- | <b>Syndication</b> extension model.
data SyndicationInfo
SyndicationInfo :: Maybe SyndicationPeriod -> Maybe Int -> Maybe UTCTime -> SyndicationInfo
[updatePeriod] :: SyndicationInfo -> Maybe SyndicationPeriod
[updateFrequency] :: SyndicationInfo -> Maybe Int
[updateBase] :: SyndicationInfo -> Maybe UTCTime

-- | Construct an empty <a>SyndicationInfo</a>.
mkSyndicationInfo :: SyndicationInfo
data SyndicationPeriod
Hourly :: SyndicationPeriod
Daily :: SyndicationPeriod
Weekly :: SyndicationPeriod
Monthly :: SyndicationPeriod
Yearly :: SyndicationPeriod
asSyndicationPeriod :: MonadThrow m => Text -> m SyndicationPeriod

-- | Parse all <b>Syndication</b> elements.
syndicationInfo :: MonadThrow m => ConduitM Event o m SyndicationInfo

-- | Parse a <tt>&lt;sy:updatePeriod&gt;</tt> element.
syndicationPeriod :: MonadThrow m => ConduitM Event o m (Maybe SyndicationPeriod)

-- | Parse a <tt>&lt;sy:updateFrequency&gt;</tt> element.
syndicationFrequency :: MonadThrow m => ConduitM Event o m (Maybe Int)

-- | Parse a <tt>&lt;sy:updateBase&gt;</tt> element.
syndicationBase :: MonadThrow m => ConduitM Event o m (Maybe UTCTime)

-- | Render all <b>Syndication</b> elements.
renderSyndicationInfo :: Monad m => SyndicationInfo -> Source m Event

-- | Render a <tt>&lt;sy:updatePeriod&gt;</tt> element.
renderSyndicationPeriod :: Monad m => SyndicationPeriod -> Source m Event

-- | Render a <tt>&lt;sy:updateFrequency&gt;</tt> element.
renderSyndicationFrequency :: Monad m => Int -> Source m Event

-- | Render a <tt>&lt;sy:updateBase&gt;</tt> element.
renderSyndicationBase :: Monad m => UTCTime -> Source m Event

-- | XML prefix is <tt>sy</tt>.
namespacePrefix :: Text

-- | XML namespace is <a>http://purl.org/rss/1.0/modules/syndication/</a>.
namespaceURI :: URIRef Absolute
instance GHC.Show.Show (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Read.Read (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Show.Show (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Read.Read (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Syndication.SyndicationModule)
instance Data.Singletons.SingI Text.RSS.Extensions.Syndication.SyndicationModule
instance Text.RSS.Extensions.ParseRssExtension Text.RSS.Extensions.Syndication.SyndicationModule
instance Text.RSS.Extensions.RenderRssExtension Text.RSS.Extensions.Syndication.SyndicationModule
instance GHC.Show.Show Text.RSS.Extensions.Syndication.SyndicationInfo
instance GHC.Read.Read Text.RSS.Extensions.Syndication.SyndicationInfo
instance GHC.Classes.Ord Text.RSS.Extensions.Syndication.SyndicationInfo
instance GHC.Generics.Generic Text.RSS.Extensions.Syndication.SyndicationInfo
instance GHC.Classes.Eq Text.RSS.Extensions.Syndication.SyndicationInfo
instance GHC.Show.Show Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Read.Read Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Classes.Ord Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Generics.Generic Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Classes.Eq Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Enum.Enum Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Enum.Bounded Text.RSS.Extensions.Syndication.SyndicationPeriod
instance GHC.Show.Show Text.RSS.Extensions.Syndication.SyndicationException
instance GHC.Classes.Ord Text.RSS.Extensions.Syndication.SyndicationException
instance GHC.Generics.Generic Text.RSS.Extensions.Syndication.SyndicationException
instance GHC.Classes.Eq Text.RSS.Extensions.Syndication.SyndicationException
instance GHC.Exception.Exception Text.RSS.Extensions.Syndication.SyndicationException


-- | <b>Dublin Core</b> extension for RSS. Cf specification at
--   <a>http://web.resource.org/rss/1.0/modules/dc/</a>.
module Text.RSS.Extensions.DublinCore

-- | <b>Dublin Core</b> tag type.
data DublinCoreModule :: *

-- | <tt>&lt;channel&gt;</tt> extension type.
channelDcMetaData :: RssChannelExtension DublinCoreModule -> DcMetaData

-- | <tt>&lt;item&gt;</tt> extension type.
itemDcMetaData :: RssItemExtension DublinCoreModule -> DcMetaData

-- | <b>Dublin Core</b> extension model.
data DcMetaData
DcMetaData :: Text -> Text -> Text -> Maybe UTCTime -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> Text -> DcMetaData
[elementContributor] :: DcMetaData -> Text
[elementCoverage] :: DcMetaData -> Text
[elementCreator] :: DcMetaData -> Text
[elementDate] :: DcMetaData -> Maybe UTCTime
[elementDescription] :: DcMetaData -> Text
[elementFormat] :: DcMetaData -> Text
[elementIdentifier] :: DcMetaData -> Text
[elementLanguage] :: DcMetaData -> Text
[elementPublisher] :: DcMetaData -> Text
[elementRelation] :: DcMetaData -> Text
[elementRights] :: DcMetaData -> Text
[elementSource] :: DcMetaData -> Text
[elementSubject] :: DcMetaData -> Text
[elementTitle] :: DcMetaData -> Text
[elementType] :: DcMetaData -> Text

-- | Construct an empty <a>DcMetaData</a>.
mkDcMetaData :: DcMetaData
instance GHC.Show.Show (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Show.Show (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.DublinCore.DublinCoreModule)
instance Data.Singletons.SingI Text.RSS.Extensions.DublinCore.DublinCoreModule
instance Text.RSS.Extensions.ParseRssExtension Text.RSS.Extensions.DublinCore.DublinCoreModule
instance Text.RSS.Extensions.RenderRssExtension Text.RSS.Extensions.DublinCore.DublinCoreModule
instance GHC.Show.Show Text.RSS.Extensions.DublinCore.DcMetaData
instance GHC.Classes.Ord Text.RSS.Extensions.DublinCore.DcMetaData
instance GHC.Generics.Generic Text.RSS.Extensions.DublinCore.DcMetaData
instance GHC.Classes.Eq Text.RSS.Extensions.DublinCore.DcMetaData


-- | <b>Content</b> extension for RSS. Cf specification at
--   <a>http://web.resource.org/rss/1.0/modules/content/</a>.
--   
--   This implementation corresponds to the <i>updated syntax</i> from the
--   specification.
module Text.RSS.Extensions.Content

-- | <b>Content</b> tag type.
data ContentModule :: *

-- | <tt>&lt;channel&gt;</tt> extension type.

-- | <tt>&lt;item&gt;</tt> extension type.

-- | Parse a <tt>&lt;content:encoded&gt;</tt> element.
contentEncoded :: MonadThrow m => ConduitM Event o m (Maybe Text)

-- | Render a <tt>&lt;content:encoded&gt;</tt> element.
renderContentEncoded :: Monad m => Text -> Source m Event

-- | XML prefix is <tt>content</tt>.
namespacePrefix :: Text

-- | XML namespace is
--   <tt><a>http://purl.org/rss/1.0/modules/content/</a></tt>
namespaceURI :: URIRef Absolute
instance GHC.Show.Show (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Show.Show (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Classes.Ord (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Content.ContentModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Content.ContentModule)
instance Data.Singletons.SingI Text.RSS.Extensions.Content.ContentModule
instance Text.RSS.Extensions.ParseRssExtension Text.RSS.Extensions.Content.ContentModule
instance Text.RSS.Extensions.RenderRssExtension Text.RSS.Extensions.Content.ContentModule


-- | <b>Atom</b> extension for RSS. Cf specification at
--   <a>http://www.rssboard.org/rss-profile#namespace-elements-atom</a>.
module Text.RSS.Extensions.Atom

-- | <b>Atom</b> tag type.
data AtomModule :: *
instance GHC.Show.Show (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Atom.AtomModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Atom.AtomModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssChannelExtension Text.RSS.Extensions.Atom.AtomModule)
instance GHC.Show.Show (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Atom.AtomModule)
instance GHC.Generics.Generic (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Atom.AtomModule)
instance GHC.Classes.Eq (Text.RSS.Types.RssItemExtension Text.RSS.Extensions.Atom.AtomModule)
instance Data.Singletons.SingI Text.RSS.Extensions.Atom.AtomModule
instance Text.RSS.Extensions.ParseRssExtension Text.RSS.Extensions.Atom.AtomModule
instance Text.RSS.Extensions.RenderRssExtension Text.RSS.Extensions.Atom.AtomModule


-- | Streaming renderers for the RSS 2.0 standard.
module Text.RSS.Conduit.Render

-- | Render the top-level <tt>&lt;rss&gt;</tt> element.
renderRssDocument :: Monad m => RenderRssExtensions e => RssDocument e -> Source m Event

-- | Render an <tt>&lt;item&gt;</tt> element.
renderRssItem :: Monad m => RenderRssExtensions e => RssItem e -> Source m Event

-- | Render a <tt>&lt;source&gt;</tt> element.
renderRssSource :: (Monad m) => RssSource -> Source m Event

-- | Render an <tt>&lt;enclosure&gt;</tt> element.
renderRssEnclosure :: (Monad m) => RssEnclosure -> Source m Event

-- | Render a <tt>&lt;guid&gt;</tt> element.
renderRssGuid :: (Monad m) => RssGuid -> Source m Event

-- | Render a <tt>&lt;cloud&gt;</tt> element.
renderRssCloud :: Monad m => RssCloud -> Source m Event

-- | Render a <tt>&lt;category&gt;</tt> element.
renderRssCategory :: (Monad m) => RssCategory -> Source m Event

-- | Render an <tt>&lt;image&gt;</tt> element.
renderRssImage :: (Monad m) => RssImage -> Source m Event

-- | Render a <tt>&lt;textInput&gt;</tt> element.
renderRssTextInput :: (Monad m) => RssTextInput -> Source m Event

-- | Render a <tt>&lt;skipDays&gt;</tt> element.
renderRssSkipDays :: (Monad m) => Set Day -> Source m Event

-- | Render a <tt>&lt;skipHours&gt;</tt> element.
renderRssSkipHours :: (Monad m) => Set Hour -> Source m Event


-- | Streaming parsers for the RSS 2.0 standard.
module Text.RSS.Conduit.Parse

-- | Parse an <tt>&lt;rss&gt;</tt> element.
--   
--   RSS extensions are automatically parsed based on the inferred result
--   type.
rssDocument :: ParseRssExtensions e => MonadThrow m => ConduitM Event o m (Maybe (RssDocument e))

-- | Parse a <tt>&lt;category&gt;</tt> element.
rssCategory :: MonadThrow m => ConduitM Event o m (Maybe RssCategory)

-- | Parse a <tt>&lt;cloud&gt;</tt> element.
rssCloud :: (MonadThrow m) => ConduitM Event o m (Maybe RssCloud)

-- | Parse an <tt>&lt;enclosure&gt;</tt> element.
rssEnclosure :: MonadThrow m => ConduitM Event o m (Maybe RssEnclosure)

-- | Parse a <tt>&lt;guid&gt;</tt> element.
rssGuid :: MonadThrow m => ConduitM Event o m (Maybe RssGuid)

-- | Parse an <tt>&lt;image&gt;</tt> element.
rssImage :: (MonadThrow m) => ConduitM Event o m (Maybe RssImage)

-- | Parse an <tt>&lt;item&gt;</tt> element.
--   
--   RSS extensions are automatically parsed based on the inferred result
--   type.
rssItem :: ParseRssExtensions e => MonadThrow m => ConduitM Event o m (Maybe (RssItem e))

-- | Parse a <tt>&lt;skipDays&gt;</tt> element.
rssSkipDays :: MonadThrow m => ConduitM Event o m (Maybe (Set Day))

-- | Parse a <tt>&lt;skipHours&gt;</tt> element.
rssSkipHours :: MonadThrow m => ConduitM Event o m (Maybe (Set Hour))

-- | Parse a <tt>&lt;source&gt;</tt> element.
rssSource :: MonadThrow m => ConduitM Event o m (Maybe RssSource)

-- | Parse a <tt>&lt;textInput&gt;</tt> element.
rssTextInput :: MonadThrow m => ConduitM Event o m (Maybe RssTextInput)


-- | Streaming parsers for the RSS 2.0 standard.
--   
--   This module re-exports a monomorphic version of the parsers from
--   <a>Text.RSS.Conduit.Parse</a> that ignores RSS extensions.
module Text.RSS.Conduit.Parse.Simple

-- | Parse an <tt>&lt;rss&gt;</tt> element.
--   
--   RSS extensions are ignored.
rssDocument :: MonadThrow m => ConduitM Event o m (Maybe RssDocument')

-- | Parse a <tt>&lt;category&gt;</tt> element.
rssCategory :: MonadThrow m => ConduitM Event o m (Maybe RssCategory)

-- | Parse a <tt>&lt;cloud&gt;</tt> element.
rssCloud :: MonadThrow m => ConduitM Event o m (Maybe RssCloud)

-- | Parse an <tt>&lt;enclosure&gt;</tt> element.
rssEnclosure :: MonadThrow m => ConduitM Event o m (Maybe RssEnclosure)

-- | Parse a <tt>&lt;guid&gt;</tt> element.
rssGuid :: MonadThrow m => ConduitM Event o m (Maybe RssGuid)

-- | Parse an <tt>&lt;image&gt;</tt> element.
rssImage :: MonadThrow m => ConduitM Event o m (Maybe RssImage)

-- | Parse an <tt>&lt;item&gt;</tt> element.
--   
--   RSS extensions are ignored.
rssItem :: MonadThrow m => ConduitM Event o m (Maybe RssItem')

-- | Parse a <tt>&lt;skipDays&gt;</tt> element.
rssSkipDays :: MonadThrow m => ConduitM Event o m (Maybe (Set Day))

-- | Parse a <tt>&lt;skipHours&gt;</tt> element.
rssSkipHours :: MonadThrow m => ConduitM Event o m (Maybe (Set Hour))

-- | Parse a <tt>&lt;source&gt;</tt> element.
rssSource :: MonadThrow m => ConduitM Event o m (Maybe RssSource)

-- | Parse a <tt>&lt;textInput&gt;</tt> element.
rssTextInput :: MonadThrow m => ConduitM Event o m (Maybe RssTextInput)


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

-- | Parse an <tt>&lt;RDF&gt;</tt> element.
--   
--   RSS extensions are automatically parsed based on the inferred result
--   type.
rss1Document :: ParseRssExtensions e => MonadCatch m => ConduitM Event o m (Maybe (RssDocument e))

-- | Parse an <tt>&lt;items&gt;</tt> element.
rss1ChannelItems :: MonadThrow m => ConduitM Event o m (Maybe [Text])

-- | Parse an <tt>&lt;image&gt;</tt> element.
rss1Image :: (MonadThrow m) => ConduitM Event o m (Maybe RssImage)

-- | Parse an <tt>&lt;item&gt;</tt> element.
--   
--   RSS extensions are automatically parsed based on the inferred result
--   type.
rss1Item :: ParseRssExtensions e => MonadCatch m => ConduitM Event o m (Maybe (RssItem e))

-- | Parse a <tt>&lt;textinput&gt;</tt> element.
rss1TextInput :: MonadThrow m => ConduitM Event o m (Maybe RssTextInput)
