From Squeak3.9 on 24 July 2007 at 6:10:21 pm <version>RSRSS-mb.29.mcz 24 July 2007 6:10:08 pm</version> <class> <name>RRCategoryTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRChange</name> <environment>Seaside</environment> <super>Core.Object</super> <private>false</private> none timestamp author title description changedClass changedSelector sourceCode <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <class> <name>RRCloudTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <comment> Seaside.RRCloudTag
<cloud> is an optional sub-element of <channel>. It specifies a web service that supports the rssCloud interface which can be implemented in HTTP-POST, XML-RPC or SOAP 1.1. Its purpose is to allow processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. A full explanation of this element and the rssCloud interface is here: http://www.rssboard.org/rsscloud-interface
</comment> <class> <name>RRComponent</name> <environment>Seaside</environment> <super>Seaside.WAComponent</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRChangesDemo</name> <environment>Seaside</environment> <super>Seaside.RRComponent</super> <private>false</private> none <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <class> <name>RRDayTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRDemo</name> <environment>Seaside</environment> <super>Seaside.RRComponent</super> <private>false</private> none <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <class> <name>RREmailAddress</name> <environment>Seaside</environment> <super>Core.Object</super> <private>false</private> none username address <imports></imports> <category>RSRSS-Model</category> <attributes> <package>RSRSS-Model</package> </attributes> </class> <class> <name>RREnclosureTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRGuidTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRLanguageTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRRenderTests</name> <environment>Seaside</environment> <super>XProgramming.SUnit.TestCase</super> <private>false</private> none <imports></imports> <category>RSRSS-Tests</category> <attributes> <package>RSRSS-Tests</package> </attributes> </class> <class> <name>RRRfc822DateTime</name> <environment>Seaside</environment> <super>Core.Object</super> <private>false</private> none dateAndTime timezoneString <imports></imports> <category>RSRSS-Model</category> <attributes> <package>RSRSS-Model</package> </attributes> </class> <class> <name>RRRssRender</name> <environment>Seaside</environment> <super>Seaside.WARender</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRRssRenderCanvas</name> <environment>Seaside</environment> <super>Seaside.WACanvas</super> <private>false</private> none context callbacks <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <comment> Seaside.RRRssRenderCanvas
Structure of an RSS Document Elements with a star (*) at the beginning are required. Channel is automatically open. channel *title *link *description language copyright managingEditor webMaster publicationDate lastBuildDate category generator documentation cloud timeToLive image *url *title *link width height description rating textInput *title *description *name *link skipHours hour skipDays day item *title *link *description author category comments enclosure guid publicationDate source Email Addresses: Email addresses must conform to RFC 2822 Convert the email address to a valid form. Examples of valid email addresses: * joesmith@example.com * joesmith@example.com (Joe Smith) * Joe Smith <joesmith@example.com> * joesmith.nospamplease@nospam.example.com You can either: - use correctly formatted strings - implement #displayString in your domain email address class so that it return a string in a valid form - implement #renderOn: in your domain email address class so that it renders a string in a valid form - use RREmailAddress date times: The value specified must meet the Date and Time specifications as defined by RFC822, with the exception that the year should be expressed as four digits. Here are examples of valid RFC822 date-times: Wed, 02 Oct 2002 08:00:00 EST Wed, 02 Oct 2002 13:00:00 GMT Wed, 02 Oct 2002 15:00:00 +0200 If you use Chronos you can use printStringUsing: printStringUsing: ChronosPrintPolicy rfc822 Else you can use RRRfc822DateTime. Here is an example of an invalid RFC822 date-time: 2002-10-02T08:00:00-05:00
</comment> <class> <name>RRRssRenderLoop</name> <environment>Seaside</environment> <super>Seaside.WARenderLoop</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRRssRenderLoopMain</name> <environment>Seaside</environment> <super>Seaside.WARenderLoopMain</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRRssRoot</name> <environment>Seaside</environment> <super>Seaside.WAHtmlRoot</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRRssSession</name> <environment>Seaside</environment> <super>Seaside.WASession</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRRssStreamDocument</name> <environment>Seaside</environment> <super>Seaside.WAHtmlStreamDocument</super> <private>false</private> none <imports></imports> <category>RSRSS-Core</category> <attributes> <package>RSRSS-Core</package> </attributes> </class> <class> <name>RRSourceTag</name> <environment>Seaside</environment> <super>Seaside.WATagBrush</super> <private>false</private> none <imports></imports> <category>RSRSS-Tags</category> <attributes> <package>RSRSS-Tags</package> </attributes> </class> <class> <name>RRStylesOne</name> <environment>Seaside</environment> <super>Seaside.WAStyleLibrary</super> <private>false</private> none <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <class> <name>RRStylesThree</name> <environment>Seaside</environment> <super>Seaside.WAStyleLibrary</super> <private>false</private> none <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <class> <name>RRStylesTwo</name> <environment>Seaside</environment> <super>Seaside.WAStyleLibrary</super> <private>false</private> none <imports></imports> <category>RSRSS-Demo</category> <attributes> <package>RSRSS-Demo</package> </attributes> </class> <methods> Seaside.WAComponent class <category>*rsrss</category>
isFeed ^false
</methods> <methods> Seaside.WABrowser class <category>*rsrss</category>
appName "This is used to build the urls that are included in the RSS feeds" ^ 'tools/classbrowser'
</methods> <methods> Seaside.WAHtmlRoot <category>*rsrss</category>
linkToRss: anUrlString title: aTtitleString self deprecatedApi. "self rss title: aTtitleString; url: anUrlString" self addHeadElement: ((WAHtmlElement named: 'link') attributeAt: 'href' put: anUrlString; attributeAt: 'rel' put: 'alternate'; attributeAt: 'type' put: 'application/rss+xml'; attributeAt: 'title' put: aTtitleString; notClosed; yourself)
</methods> <methods> Seaside.WAHtmlRoot <category>*rsrss</category>
rss ^self link beAlternate; beRss; notClosed; yourself
</methods> <methods> Seaside.WADispatcherComponent <category>*rsrss</category>
addRssLinksToRoot: anHtmlRoot | entryPoints | entryPoints := self entryPoints select: [ :each | each isFeed ]. entryPoints do: [ :each | anHtmlRoot linkToRss: each basePath title: each description ]
</methods> <methods> Seaside.WADispatcherComponent <category>*rsrss</category>
updateRoot: aRoot "This code is needed so that RSS symbol shows up in the url field of Safari or Firefox" super updateRoot: aRoot. self addRssLinksToRoot: aRoot
</methods> <methods> Seaside.WARequestHandler <category>*rsrss</category>
isFeed ^false
</methods> <methods> Seaside.WAApplication <category>*rsrss</category>
isFeed ^self rootComponent isFeed
</methods> <methods> Seaside.RRCategoryTag <category>accessing</category>
tag ^'category'
</methods> <methods> Seaside.RRCategoryTag <category>attributes</category>
category: aString self attributeAt: 'category' put: aString
</methods> <methods> Seaside.RRChange <category>accessing</category>
changedClass ^ changedClass
</methods> <methods> Seaside.RRChange <category>accessing</category>
author: anObject author := anObject
</methods> <methods> Seaside.RRChange <category>api</category>
addParametersTo: anUrl self hasChangedClass ifFalse: [^self]. anUrl addParameter: 'class' value: self changedClassName. self hasChangedSelector ifTrue: [ anUrl addParameter: 'method' value: self changedSelector ]. self isMeta ifTrue: [ anUrl addParameter: 'meta']
</methods> <methods> Seaside.RRChange <category>accessing</category>
sourceCode: aString sourceCode := aString
</methods> <methods> Seaside.RRChange <category>accessing</category>
title ^title
</methods> <methods> Seaside.RRChange <category>accessing</category>
changedClass: anObject changedClass := anObject
</methods> <methods> Seaside.RRChange <category>testing</category>
hasChangedClass "Some VW changes are not about any specific class" ^self changedClass notNil
</methods> <methods> Seaside.RRChange <category>accessing</category>
sourceCode ^sourceCode
</methods> <methods> Seaside.RRChange <category>accessing</category>
changedSelector: aSymbol changedSelector := aSymbol
</methods> <methods> Seaside.RRChange <category>accessing</category>
author ^author
</methods> <methods> Seaside.RRChange <category>api</category>
changedClassName self hasChangedClass ifFalse: [^nil]. ^ self changedClass theNonMetaClass fullName
</methods> <methods> Seaside.RRChange <category>accessing</category>
timestamp ^timestamp
</methods> <methods> Seaside.RRChange <category>accessing</category>
timestamp: aTimestamp timestamp := aTimestamp
</methods> <methods> Seaside.RRChange <category>accessing</category>
title: aString title := aString
</methods> <methods> Seaside.RRChange <category>testing</category>
isMeta ^self changedClass isMeta
</methods> <methods> Seaside.RRChange <category>api</category>
sourceCodeLimitedTo: max self sourceCode ifNil: [ ^String new ]. ^self sourceCode copyFrom: 1 to: (max min: self sourceCode size)
</methods> <methods> Seaside.RRChange <category>accessing</category>
changedSelector ^ changedSelector
</methods> <methods> Seaside.RRChange <category>accessing</category>
description ^description ifNil: [ self sourceCode ].
</methods> <methods> Seaside.RRChange <category>testing</category>
hasChangedSelector ^self changedSelector notNil
</methods> <methods> Seaside.RRChange <category>accessing</category>
description: aString description := aString
</methods> <methods> Seaside.RRChangesDemo <category>model</category>
dateOfImage ^DateAndTime now
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
baseUrl ^WAUrl new scheme: #http; hostname: self session currentRequest host; "that looks a bit unsafe, better use #application" addToPath: self basePath; yourself
</methods> <methods> Seaside.RRChangesDemo <category>model</category>
recentChanges ^SeasidePlatformSupport recentChanges
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
renderRecentChangesOn: rss self recentChanges do: [:each | self renderChange: each on: rss].
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
renderDescription: aString on: html | aStream | aString isNil ifTrue: [ ^ self ]. aStream := aString readStream. html preformatted: [ html strong: aStream nextLine. aStream atEnd ifFalse: [ html text: (String with: Character cr). html text: aStream upToEnd ]]
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
renderChannelOn: rss rss title: [ rss text: 'Recent changes to the Seaside image'. rss space. rss text: SeasidePlatformSupport shortImageName]. rss link: self baseUrl asString , '/'. "Should go to the default app if defined" rss description: [ rss text: 'Changes that were recently made to the Seaside image.'. rss space. rss text: SeasidePlatformSupport imageName]. rss language englishUnitedStates. rss publicationDate: (RRRfc822DateTime newDateAndTime: self dateOfLastChange). rss lastBuildDate: (RRRfc822DateTime newDateAndTime: self dateOfImage). rss defaultDocumentation. rss defaultGenerator.
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
basePath ^WADispatcher default basePath
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
updateRoot: xmlRoot "Here as a reminder" super updateRoot: xmlRoot
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
renderContentOn: rss self renderChannelOn: rss. self renderRecentChangesOn: rss.
</methods> <methods> Seaside.RRChangesDemo <category>rendering</category>
renderChange: aChange on: rss | url | url := self baseUrl addToPath: WABrowser appName; yourself. aChange addParametersTo: url. rss item: [ rss title: aChange title. rss author: aChange author. "has to be an email address" rss link: url. rss description: [ rss renderHtml: [ :h | self renderDescription: aChange description on: h ]]. rss publicationDate: (RRRfc822DateTime newDateAndTime: aChange timestamp) ]
</methods> <methods> Seaside.RRChangesDemo <category>model</category>
dateOfLastChange ^DateAndTime now
</methods> <methods> Seaside.RRCloudTag <category>attributes</category>
port: anInteger ^self attributeAt: 'port' put: anInteger
</methods> <methods> Seaside.RRCloudTag <category>protocols</category>
beXmlRpc self protocol: 'xml-rpc'
</methods> <methods> Seaside.RRCloudTag <category>attributes</category>
domain: aString ^self attributeAt: 'domain' put: aString
</methods> <methods> Seaside.RRCloudTag <category>attributes</category>
registerProcedure: aString ^self attributeAt: 'registerProcedure' put: aString
</methods> <methods> Seaside.RRCloudTag <category>attributes</category>
path: aString ^self attributeAt: 'path' put: aString
</methods> <methods> Seaside.RRCloudTag <category>protocols</category>
beSoap self protocol: 'soap'
</methods> <methods> Seaside.RRCloudTag <category>accessing</category>
tag ^'cloud'
</methods> <methods> Seaside.RRCloudTag <category>attributes</category>
protocol: aString ^self attributeAt: 'protocol' put: aString
</methods> <methods> Seaside.RRComponent <category>rendering</category>
rendererClass ^RRRssRenderCanvas
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
thursday ^self with: 'Thursday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
tuesday ^self with: 'Tuesday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
wednesday ^self with: 'Wednesday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
triday ^self with: 'Friday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
sunday ^self with: 'Sunday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
saturday ^self with: 'Saturday'
</methods> <methods> Seaside.RRDayTag <category>attributes</category>
monday ^self with: 'Monday'
</methods> <methods> Seaside.RRDayTag <category>accessing</category>
tag ^'day'
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderSecondItemOn: rss rss item: [ rss title: 'Space Exploration'. rss author: 'Joe Smith <joesmith@example.com>'. rss link: 'http://liftoff.msfc.nasa.gov/'. rss description: 'Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a partial eclipse of the Sun on Saturday, May 31st.'. rss publicationDate: (RRRfc822DateTime newUtc: self secondPublicationDate). rss guid: 'http://liftoff.msfc.nasa.gov/2003/05/30.html#item572' ]
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderFourthtemOn: rss rss item: [ rss title: 'Astronauts'' Dirty Laundry'. rss author: (RREmailAddress address: 'joesmith@example.com'). rss link: 'http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp'. rss description: 'Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them. Instead, astronauts have other options.'. rss publicationDate: 'Tue, 20 May 2003 08:56:02 GMT'. rss guid: 'http://liftoff.msfc.nasa.gov/2003/05/20.html#item570' ]
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderChannelOn: rss rss title: 'Liftoff News'. rss link: 'http://liftoff.msfc.nasa.gov/'. rss description: 'Liftoff to Space Exploration.'. rss language englishUnitedStates. rss publicationDate: 'Tue, 10 Jun 2003 04:00:00 GMT'. rss lastBuildDate: 'Tue, 10 Jun 2003 09:41:01 GMT'. rss defaultDocumentation. rss generator: 'Weblog Editor 2.0'. rss managingEditor: 'editor@example.com'. rss webMaster: 'webmaster@example.com'
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderThirdItemOn: rss rss item: [ rss title: 'The Engine That Does More'. rss author: (RREmailAddress address: 'joesmith@example.com' username: 'Joe Smith'). rss link: 'http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp'. rss description: 'Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.'. rss publicationDate: (RRRfc822DateTime dateAndTime: self thirdPublicationDate timezoneString: 'EST'). rss guid: 'http://liftoff.msfc.nasa.gov/2003/05/27.html#item571' ]
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderFirstItemOn: rss rss item: [ rss title: 'Star City'. rss author: 'joesmith@example.com (Joe Smith)'. rss link: 'http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp'. rss description: '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 Star City.'. rss publicationDate: (RRRfc822DateTime newDateAndTime: self firstPublicationDate). rss guid: 'http://liftoff.msfc.nasa.gov/2003/06/03.html#item573' ]
</methods> <methods> Seaside.RRDemo <category>private</category>
fourthPublicationDate ^DateAndTime year: 2003 month: 5 day: 20 hour: 8 minute: 56 second: 02
</methods> <methods> Seaside.RRDemo <category>private</category>
firstPublicationDate ^DateAndTime year: 2003 month: 6 day: 3 hour: 9 minute: 39 second: 21
</methods> <methods> Seaside.RRDemo <category>rendering</category>
renderContentOn: rss self renderChannelOn: rss. self renderFirstItemOn: rss. self renderSecondItemOn: rss. self renderThirdItemOn: rss. self renderFourthtemOn: rss
</methods> <methods> Seaside.RRDemo <category>private</category>
secondPublicationDate ^DateAndTime year: 2003 month: 5 day: 30 hour: 11 minute: 6 second: 42
</methods> <methods> Seaside.RRDemo <category>private</category>
thirdPublicationDate ^DateAndTime year: 2003 month: 5 day: 27 hour: 8 minute: 37 second: 32
</methods> <methods> Seaside.RREmailAddress <category>printing</category>
printOn: aStream super printOn: aStream. aStream nextPut: $(. aStream nextPutAll: self displayString. aStream nextPut: $)
</methods> <methods> Seaside.RREmailAddress <category>accessing</category>
address ^address
</methods> <methods> Seaside.RREmailAddress <category>accessing</category>
username ^username
</methods> <methods> Seaside.RREmailAddress <category>accessing</category>
address: anObject address := anObject
</methods> <methods> Seaside.RREmailAddress <category>accessing</category>
username: anObject username := anObject
</methods> <methods> Seaside.RREmailAddress <category>displaying</category>
displayString ^String streamContents: [ :stream | username isNil ifFalse: [ stream nextPutAll: username; nextPutAll: ' <']. stream nextPutAll: address. username isNil ifFalse: [ stream nextPut: $> ] ]
</methods> <methods> Seaside.RREnclosureTag <category>attributes</category>
type: aString self attributeAt: 'type' put: aString
</methods> <methods> Seaside.RREnclosureTag <category>attributes</category>
url: aString self attributeAt: 'url' put: aString
</methods> <methods> Seaside.RREnclosureTag <category>attributes</category>
length: anInteger self attributeAt: 'length' put: anInteger
</methods> <methods> Seaside.RREnclosureTag <category>accessing</category>
tag ^'enclosure'
</methods> <methods> Seaside.RRGuidTag <category>attributes</category>
isPermaLink: aBoolean "the value really must be a string else seaside makes isPermaLink='isPermaLink'" self attributeAt: 'isPermaLink' put: aBoolean displayString
</methods> <methods> Seaside.RRGuidTag <category>accessing</category>
tag ^'guid'
</methods> <methods> Seaside.RRGuidTag <category>attributes</category>
beNoPermaLink self isPermaLink: false
</methods> <methods> Seaside.RRGuidTag <category>attributes</category>
bePermaLink self isPermaLink: true
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
swedishFinland self with: 'sv-fi'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
norwegian self with: 'no'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishCostaRica self with: 'es-cr'
</methods> <methods> Seaside.RRLanguageTag <category>accessing</category>
tag ^'language'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishEcuador self with: 'es-ec'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishUruguay self with: 'es-uy'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishParaguay self with: 'es-py'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
germanGermany self with: 'de-de'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
serbian self with: 'sr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
gaelic self with: 'gd'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanish self with: 'es'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchLuxembourg self with: 'fr-lu'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
bulgarian self with: 'bg'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
ukranian self with: 'uk'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
chineseSimplified self with: 'zh-cn'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishVenezuela self with: 'es-ve'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishUnitedStates self with: 'en-us'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
english self with: 'en'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchBelgium self with: 'fr-be'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
afrikaans self with: 'af'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
germanAustria self with: 'de-at'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
polish self with: 'pl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
russianRussia self with: 'ru-ru'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
swedishSweden self with: 'sv-se'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
greek self with: 'el'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
estonian self with: 'et'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
germanLuxembourg self with: 'de-lu'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
croatian self with: 'hr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishBolivia self with: 'es-bo'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
icelandic self with: 'is'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishGuatemala self with: 'es-gt'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishBelize self with: 'en-bz'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishAustralia self with: 'en-au'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
portugueseBrazil self with: 'pt-br'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishNicaragua self with: 'es-ni'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
albanian self with: 'sq'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
romanianRomania self with: 'ro-ro'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
russian self with: 'ru'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
hawaiian self with: 'haw'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
romanianMoldova self with: 'ro-mo'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
catalan self with: 'ca'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishJamaica self with: 'en-jm'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchFrance self with: 'fr-fr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
japanese self with: 'ja'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
germanLiechtenstein self with: 'de-li'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishColombia self with: 'es-co'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
indonesian self with: 'in'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
danish self with: 'da'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchCanada self with: 'fr-ca'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishIreland self with: 'en-ie'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishNewZealand self with: 'en-nz'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishMexico self with: 'es-mx'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
swedish self with: 'sv'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
romanian self with: 'ro'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
korean self with: 'ko'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishSouthAfrica self with: 'en-za'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchMonaco self with: 'fr-mc'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishDominicanRepublic self with: 'es-do'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
galician self with: 'gl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishChile self with: 'es-cl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishCanada self with: 'en-ca'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
czech self with: 'cs'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishUnitedKingdom self with: 'en-gb'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishPeru self with: 'es-pe'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
frenchSwitzerland self with: 'fr-ch'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
dutchBelgium self with: 'nl-be'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
basque self with: 'eu'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
chineseTraditional self with: 'zh-tw'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
faeroese self with: 'fo'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishSpain self with: 'es-es'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
finnish self with: 'fi'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
slovak self with: 'sk'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
dutchNetherlands self with: 'nl-nl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
russianMoldova self with: 'ru-mo'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishZimbabwe self with: 'en-zw'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
italianItaly self with: 'it-it'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
french self with: 'fr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
hungarian self with: 'hu'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
macedonian self with: 'mk'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
belarusian self with: 'be'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
german self with: 'de'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
portuguese self with: 'pt'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishArgentina self with: 'es-ar'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishTrinidad self with: 'en-tt'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
irish self with: 'ga'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
germanSwitzerland self with: 'de-ch'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishPanama self with: 'es-pa'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
slovenian self with: 'sl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
turkish self with: 'tr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
dutch self with: 'nl'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
portuguesePortugal self with: 'pt-pt'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishPuertoRico self with: 'es-pr'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
englishPhillipines self with: 'en-ph'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishHonduras self with: 'es-hn'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
italianSwitzerland self with: 'it-ch'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
spanishElSalvador self with: 'es-sv'
</methods> <methods> Seaside.RRLanguageTag <category>languages-generated</category>
italian self with: 'it'
</methods> <methods> Seaside.RRRenderTests <category>testing</category>
testExample | acutalContent expectedContent | acutalContent := self render: [ :rss | rss description: 'Das super geile Blog.'. rss contentEncoded: '<p>Das super geile Blog.</p>'. rss generator: 'Pier 1.0.9-alpha'. rss language english ]. expectedContent := '<description>Das super geile Blog.</description><content:encoded><![CDATA[<p>Das super geile Blog.</p>]]></content:encoded><generator>Pier 1.0.9-alpha</generator><language>en</language>'. self assert: acutalContent = expectedContent
</methods> <methods> Seaside.RRRenderTests <category>private</category>
render: aBlock | context renderer | context := WARenderingContext new document: (WAHtmlStreamDocument new bodyStream; yourself). renderer := RRRssRenderCanvas context: context callbacks: Dictionary new. ^ String streamContents: [:stream | renderer context document stream: stream. aBlock value: renderer. renderer flush]
</methods> <methods> Seaside.RRRfc822DateTime <category>accessing</category>
timezoneString: anObject timezoneString := anObject
</methods> <methods> Seaside.RRRfc822DateTime <category>accessing</category>
timezoneString ^timezoneString
</methods> <methods> Seaside.RRRfc822DateTime <category>printing</category>
printString ^String streamContents: [ :stream | stream nextPutAll: (dateAndTime dayOfWeekName first: 3); nextPutAll: ', '; nextPutAll: (dateAndTime dayOfMonth printPaddedWith: $0 to: 2); space; nextPutAll: (dateAndTime monthName first: 3); space; nextPutAll: dateAndTime year displayString; space; nextPutAll: (dateAndTime hour24 printPaddedWith: $0 to: 2); nextPut: $:; nextPutAll: (dateAndTime minute printPaddedWith: $0 to: 2); nextPut: $:; nextPutAll: (dateAndTime second printPaddedWith: $0 to: 2); space; nextPutAll: timezoneString ]
</methods> <methods> Seaside.RRRfc822DateTime <category>accessing</category>
dateAndTime ^dateAndTime
</methods> <methods> Seaside.RRRfc822DateTime <category>accessing</category>
dateAndTime: anObject dateAndTime := anObject
</methods> <methods> Seaside.RRRssRender <category>rendering</category>
writeOnLoadOn: anHtmlDocument
</methods> <methods> Seaside.RRRssRender <category>rendering</category>
buildDocRoot | docRoot | docRoot := RRRssRoot new. docRoot resourceBaseUrl: self application resourceBaseUrl. self session updateRoot: docRoot. root visiblePresentersDo: [:each | each updateRoot: docRoot]. ^ docRoot
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
image: aBlock self image with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
image "Specifies a GIF, JPEG or PNG image that can be displayed with the channel. the following subelements are required: url title link the following subelements are optional: width height description " ^ self tag: 'image'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
category "---- as optional subelement of channel ---- Specify one or more categories that the channel belongs to. Follows the same rules as the <item>-level category element below. ---- as optional subelement of item ---- Includes the item in one or more categories. The value of the element is a forward-slash-separated string that identifies a hierarchic location in the indicated taxonomy. Processors may establish conventions for the interpretation of categories. You may include as many category elements as you need to, for different domains, and to have an item cross-referenced in different parts of the same domain. It has one optional attribute, domain, a string that identifies a categorization taxonomy. In RSS 2.0, a provision is made for linking a channel to its identifier in a cataloging system, using the channel-level category feature, described above. For example, to link a channel to its Syndic8 identifier, include a category element as a sub-element of <channel>, with domain 'Syndic8', and value the identifier for your channel in the Syndic8 database. The appropriate category element for Scripting News would be rss category domain: 'Syndic8'; with: 1765" ^ self brush: RRCategoryTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
language: aBlock self language with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
text: aString "copy pasted from WAHtmlCanvas" self html: (self class encode: aString)
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
rating: aBlock self rating with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>well-formed-web</category>
comment "This element appears in RSS feeds and contains the URI that comment entries are to be POSTed to. The details of this are outlined in the CommentAPI Specification (http://wellformedweb.org/story/9)" ^self tag: 'wfw:comment'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
skipHours "A hint for aggregators telling them which hours they can skip. An XML element that contains up to 24 <hour> sub-elements whose value is a number between 0 and 23, representing a time in GMT, when aggregators, if they support the feature, may not read the channel on hours listed in the skipHours element. The hour beginning at midnight is hour zero." ^ self tag: 'skipHours'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
link: aBlock self link with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
source "The RSS channel that the item came from. Its value is the name of the RSS channel that the item came from, derived from its <title>. It has one required attribute, url, which links to the XMLization of the source. rss source url: 'http://www.tomalak.org/links2.xml'; with: 'Tomalak''s Realm' The purpose of this element is to propagate credit for links, to publicize the sources of news items. It can be used in the Post command of an aggregator. It should be generated automatically when forwarding an item from an aggregator to a weblog authoring tool." ^ self brush: RRSourceTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>inner-html</category>
renderHtml: aBlock | aRenderingContext anHtmlRenderer | aRenderingContext := WARenderingContext new document: RRRssStreamDocument forHtml. anHtmlRenderer := WARenderCanvas context: aRenderingContext callbacks: nil. aBlock value: anHtmlRenderer. self text: aRenderingContext document stream contents
</methods> <methods> Seaside.RRRssRenderCanvas <category>well-formed-web</category>
commentRss "This element also appears in RSS feeds and contains the URI of the RSS feed for comments on that Item. This is documented in Chris Sells' Specification(http://www.sellsbrothers.com/spout/default.aspx?content=archive.htm#exposingRssComments). Note that for quite a while this page has had a typo and erroneously referred to this element as 'commentRSS' as opposed to the correct 'commentRss'. Feed consumers should be aware that they may run into both spellings in the wild. Please see this page (http://www.intertwingly.net/blog/2006/04/16/commentRss) for more information." ^self tag: 'wfw:commentRss'
</methods> <methods> Seaside.RRRssRenderCanvas <category>initialize-release</category>
initializeWithContext: aRenderingContext callbacks: aCallbackStore context := aRenderingContext. callbacks := aCallbackStore
</methods> <methods> Seaside.RRRssRenderCanvas <category>well-formed-web</category>
commentRss: aBlock ^self commentRss with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
lastBuildDate "The last time the content of the channel changed. again an RFC 822 date like all the other dates e.g.: 'Sat, 07 Sep 2002 09:42:31 GMT'" ^ self tag: 'lastBuildDate'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
cloud: aBlock self cloud with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>skipHours</category>
hour: aBlock self hour with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
description " ---- as required subelement of channel ---- Phrase or sentence describing the channel. e.g.: 'The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.' ---- a required subelement of item ---- The item synopsis. ---- as required subelement of textInput ---- Explains the text input area. ---- as an optional subelement of image ---- contains text that is included in the TITLE attribute of the link formed around the image in the HTML rendering." ^ self tag: 'description'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
defaultGenerator self generator: self defaultGeneratorString
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
close self flush
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
managingEditor "Email address for person responsible for editorial content. e.g.: 'George Matesky <geo@herald.com>'" ^ self tag: 'managingEditor'
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-optional</category>
height "Optional elements include <width> and <height>, numbers, indicating the width and height of the image in pixels. Maximum value for height is 400, default value is 31." ^ self tag: 'height'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
timeToLive "It's a number of minutes that indicates how long a channel can be cached before refreshing from the source. This makes it possible for RSS sources to be managed by a file-sharing network such as Gnutella. e.g.: 60" ^ self tag: 'ttl'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
guid: aBlock self guid with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
lastBuildDate: aBlock self lastBuildDate with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
author "Email address of the author of the item. It's the email address of the author of the item. For newspapers and magazines syndicating via RSS, the author is the person who wrote the article that the <item> describes. For collaborative weblogs, the author of the item might be different from the managing editor or webmaster. For a weblog authored by a single individual it would make sense to omit the <author> element." ^ self tag: 'author'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
webMaster "Email address for person responsible for technical issues relating to channel. e.g.: 'Betty Guernsey <betty@herald.com>'" ^ self tag: 'webMaster'
</methods> <methods> Seaside.RRRssRenderCanvas <category>dublin-core</category>
creator: aBlock self creator with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
cloud "Allows processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. for more info see RRCloudTag" ^ self brush: RRCloudTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
category: aBlock self category with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
comment: aString
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-optional</category>
width: aBlock self width with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>skipHours</category>
hour ^ self tag: 'hour'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
defaultDocumentation self documentation: 'http://www.rssboard.org/rss-specification'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
enclosure "Describes a media object that is attached to the item. It has three required attributes. url says where the enclosure is located, length says how big it is in bytes, and type says what its type is, a standard MIME type. The url must be an http url. e.g.: rss enclosure url: 'http://www.scripting.com/mp3s/weatherReportSuite.mp3'; length: 12216320; type: 'audio/mpeg'" ^ self brush: RREnclosureTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
html: aString self flush. self document text: aString
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-required</category>
url "is the URL of a GIF, JPEG or PNG image that represents the channel." ^ self tag: 'url'
</methods> <methods> Seaside.RRRssRenderCanvas <category>convenience</category>
space self html: self spaceEntity
</methods> <methods> Seaside.RRRssRenderCanvas <category>item</category>
item: aBlock self item with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
comments: aBlock self comments with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-required</category>
url: aBlock self url with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
documentation: aBlock self documentation with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
title "----- as required subelement of channel ---- The name of the channel. It's how people refer to your service. If you have an HTML website that contains the same information as your RSS file, the title of your channel should be the same as the title of your website. e.g.: 'GoUpstate.com News Headlines' ---- as required subelement of item ---- The title of the item. ---- as required subelement of image ---- describes the image, it's used in the ALT attribute of the HTML <img> tag when the channel is rendered in HTML ---- as required subelement of textInput ---- The label of the Submit button in the text input area." ^ self tag: 'title'
</methods> <methods> Seaside.RRRssRenderCanvas <category>textinput-required</category>
name: aBlock self name with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
guid "A string that uniquely identifies the item. guid stands for globally unique identifier. It's a string that uniquely identifies the item. When present, an aggregator may choose to use this string to determine if an item is new. e.g.: 'http://some.server.com/weblogItem3207' There are no rules for the syntax of a guid. Aggregators must view them as a string. It's up to the source of the feed to establish the uniqueness of the string. If the guid element has an attribute named isPermaLink with a value of true, the reader may assume that it is a permalink to the item, that is, a url that can be opened in a Web browser, that points to the full item described by the <item> element. An example: e.g.: rss guid bePermaLink; with: 'http://inessential.com/2002/09/01.php#a2' isPermaLink is optional, its default value is true. If its value is false, the guid may not be assumed to be a url, or a url to anything in particular." ^ self brush: RRGuidTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
rating "The PICS (http://www.w3.org/PICS/) rating for the channel." ^ self tag: 'rating'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
managingEditor: aBlock self managingEditor with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>accessing</category>
document ^self context document
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
generator "A string indicating the program used to generate the channel. e.g.: 'RSRSS-pmm.3' see #defaultGenerator" ^ self tag: 'generator'
</methods> <methods> Seaside.RRRssRenderCanvas <category>textinput-required</category>
name "The name of the text object in the text input area." ^ self tag: 'name'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
comments "URL of a page for comments relating to the item. If present, it is the url of the comments page for the item." ^ self tag: 'comments'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
language "The language the channel is written in. This allows aggregators to group all Italian language sites, for example, on a single page. A list of allowable values for this element, as provided by Netscape, is implemented in the 'languages-generated' protocl of RRLanguageTag. You may also use values defined by the W3C (http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes)." ^ self brush: RRLanguageTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-optional</category>
width "Optional elements include <width> and <height>, numbers, indicating the width and height of the image in pixels. Maximum value for width is 144, default value is 88." ^ self tag: 'width'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
timeToLive: aBlock self timeToLive with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
tag: aString "copy pasted from WAHtmlCanvas" ^ self brush: (WAGenericTag tag: aString)
</methods> <methods> Seaside.RRRssRenderCanvas <category>content</category>
contentEncoded "A module for the actual content of websites, in multiple formats. http://web.resource.org/rss/1.0/modules/content/ example: rss contentEncoded: '<p>What a <em>beautiful</em> day!</p>'" ^ self tag: 'content:encoded'
</methods> <methods> Seaside.RRRssRenderCanvas <category>image-optional</category>
height: aBlock self height with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>convenience</category>
cdata: aString "aString must not include ']]>' Google says if there is an error in the feed, there is a 0.02% chance that this is the cause, combined with the fact that about 7% of all feeds have errors there is a (2 / 10000) * (7 / 100) chance this goes wrong. Do you deal in chance? http://googlereader.blogspot.com/2005/12/xml-errors-in-feeds.html" self flush. self document text: '<![CDATA['. self document text: aString. self document text: ']]>'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
enclosure: aBlock self enclosure with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
link "---- as required subelement of channel ---- The URL to the HTML website corresponding to the channel. e.g.: 'http://www.goupstate.com/' ---- as required subelement of item ---- The URL of the item. ---- as required subelement of image ---- is the URL of the site, when the channel is rendered, the image is a link to the site. (Note, in practice the image <title> and <link> should have the same value as the channel's <title> and <link> ---- as required subelement of textInput ---- The URL of the CGI script that processes text input requests." ^ self tag: 'link'
</methods> <methods> Seaside.RRRssRenderCanvas <category>skipDays</category>
day ^ self brush: RRDayTag new
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
description: aBlock self description with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>item</category>
item ^ self tag: 'item'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
author: aBlock self author with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
copyright: aBlock self copyright with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
copyright "Copyright notice for content in the channel." ^ self tag: 'copyright'
</methods> <methods> Seaside.RRRssRenderCanvas <category>item-optional</category>
source: aBlock self source with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
skipHours: aBlock self skipHours with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>xml</category>
spaceEntity ^'&#160;'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
webMaster: aBlock self webMaster with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
textInput "Specifies a text input box that can be displayed with the channel. The purpose of the <textInput> element is something of a mystery. You can use it to specify a search engine box. Or to allow a reader to provide feedback. Most aggregators ignore it. It has the following required subelements: title description name link" ^ self tag: 'textInput'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
generator: aBlock self generator with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>content</category>
contentEncoded: aString "A module for the actual content of websites. aString must not include ']]>'" self contentEncoded with: [ self cdata: aString ]
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
skipDays "A hint for aggregators telling them which days they can skip. An XML element that contains up to seven <day> sub-elements whose value is Monday, Tuesday, Wednesday, Thursday, Friday, Saturday or Sunday. Aggregators may not read the channel during days listed in the skipDays element." ^ self tag: 'skipDays'
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
publicationDate: aBlock self publicationDate with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>private</category>
defaultGeneratorString ^SeasidePlatformSupport defaultRSSGeneratorString
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
textInput: aBlock self textInput with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
skipDays: aBlock self skipDays with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
documentation "A URL that points to the documentation for the format used in the RSS file. It's probably a pointer to this page. It's for people who might stumble across an RSS file on a Web server 25 years from now and wonder what it is. e.g. 'http://www.rssboard.org/rss-specification' see #defaultDocumentation" ^ self tag: 'docs'
</methods> <methods> Seaside.RRRssRenderCanvas <category>skipDays</category>
day: aBlock self day with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-required</category>
title: aBlock self title with: aBlock
</methods> <methods> Seaside.RRRssRenderCanvas <category>dublin-core</category>
creator "An entity primarily responsible for making the resource. Examples of a Creator include a person, an organization, or a service. Typically, the name of a Creator should be used to indicate the entity. http://dublincore.org/documents/dces/ http://purl.org/dc/elements/1.1/creator" ^ self tag: 'dc:creator'
</methods> <methods> Seaside.RRRssRenderCanvas <category>accessing</category>
context ^context
</methods> <methods> Seaside.RRRssRenderCanvas <category>channel-optional</category>
publicationDate "---- as optional subelement of channel ---- The publication date for the content in the channel. For example, the New York Times publishes on a daily basis, the publication date flips once every 24 hours. That's when the pubDate of the channel changes. All date-times in RSS conform to the Date and Time Specification of RFC 822(http://asg.web.cmu.edu/rfc/rfc822.html#sec-5), with the exception that the year may be expressed with two characters or four characters (four preferred). ---- as optional subelement of item ---- Indicates when the item was published. Its value is a date, indicating when the item was published. If it's a date in the future, aggregators may choose to not display the item until that date. e.g: 'Sat, 07 Sep 2002 00:00:01 GMT' minimal: '20 Jun 82 23:59 EST'" ^ self tag: 'pubDate'
</methods> <methods> Seaside.RRRssRenderLoop <category>accessing</category>
root: aComponent self basicRoot: aComponent
</methods> <methods> Seaside.RRRssRenderLoop <category>rendering</category>
run [(RRRssRender new root: root) go] repeat
</methods> <methods> Seaside.RRRssRenderLoopMain <category>decorations</category>
call: aComponent ^ RRRssRenderLoop new call: aComponent
</methods> <methods> Seaside.RRRssRenderLoopMain <category>accessing</category>
start: aRequest | root | root := self createRoot. root visiblePresentersDo: [ :each | each initialRequest: aRequest]. (RRRssRenderLoop new root: root) run
</methods> <methods> Seaside.RRRssRoot <category>accessing</category>
contentType ^self class defaultContentType
</methods> <methods> Seaside.RRRssRoot <category>writing</category>
writeOn: aStream aStream nextPutAll: '<?xml version="1.0" encoding="'. aStream nextPutAll: self charSet. aStream nextPutAll: '"?>'. styles do: [:ea | self writeStyle: ea on: aStream]. aStream nextPutAll: '<rss'. htmlAttrs writeOn: aStream. aStream nextPutAll: '><channel>'.
</methods> <methods> Seaside.RRRssRoot <category>private</category>
initialize "sorry but there's no way how I can send super" self title: 'hack to prevent error'. htmlAttrs := WAHtmlAttributes new at: 'xmlns:content' put: 'http://purl.org/rss/1.0/modules/content/'; at: 'xmlns:wfw' put: 'http://wellformedweb.org/CommentAPI/'; at: 'xmlns:dc' put: 'http://purl.org/dc/elements/1.1/'; yourself. headAttrs := WAHtmlAttributes new. bodyAttrs := WAHtmlAttributes new. headElements := OrderedCollection new. scripts := OrderedCollection new. styles := OrderedCollection new. htmlAttrs at: 'version' put: '2.0'
</methods> <methods> Seaside.RRRssRoot <category>writing</category>
writeStyle: aString on: aStream | url session mimeType | "Guessing the mime type" mimeType := (aString beginsWith: '<?xml') ifTrue: ['text/xsl'] ifFalse: ['text/css']. session := WACurrentSession value. url := session application urlForRequestHandler: (WADocumentHandler document: aString mimeType: mimeType fileName: nil). url hostname: session currentRequest host. aStream nextPutAll: '<?xml-stylesheet href="'; nextPutAll: url displayString; nextPutAll: '" type="'; nextPutAll: mimeType; nextPutAll: '"?>'
</methods> <methods> Seaside.RRRssSession <category>http</category>
contentType ^RRRssRoot defaultContentType
</methods> <methods> Seaside.RRRssSession <category>responding</category>
outputDocumentClass "To be subclassed as needed" ^RRRssStreamDocument
</methods> <methods> Seaside.RRRssStreamDocument <category>testing</category>
shouldPrintCloseTagFor: aString ^true
</methods> <methods> Seaside.RRRssStreamDocument <category>closing</category>
close self bodyStream nextPutAll: '</channel></rss>'
</methods> <methods> Seaside.RRRssStreamDocument <category>inner-html</category>
forHtml state := #body.
</methods> <methods> Seaside.RRSourceTag <category>attributes</category>
url: aString self attributeAt: 'url' put: aString
</methods> <methods> Seaside.RRSourceTag <category>accessing</category>
tag ^'source'
</methods> <methods> Seaside.RRStylesOne <category>css</category>
style ^' rss { display: block; font-family: verdana, arial; } title { display: block; margin: 5px; padding: 2px; color: gray; border-bottom: 1px solid silver; } link { display: block; font-size: small; padding-left: 10px; } item { display: block; padding: 2px 30px 2px 30px; } docs { display: block; background-color: #ffffe6; margin: 20px; text-align: center; padding: 5px; color: #7f7f7f; border: 1px solid silver; } /* all hidden elements */ language, lastBuildDate, ttl, guid, category, description, pubDate { display: none; } '
</methods> <methods> Seaside.RRStylesThree <category>xslt</category>
style ^'<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/rss"> <html> <head> <link href="some-more-work-to-do-here.css" rel="stylesheet" type="text/css" /> <style type="text/css"> body { font-size:0.83em; } </style> </head> <body> <div id="logo"> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="channel/link" /> </xsl:attribute> <xsl:value-of select="channel/title" /> </xsl:element> </div> <div class="Snippet" style="border-width:0; background-color:#FFF; margin:1em"> <div class="titleWithLine"> <xsl:value-of select="channel/description" /> </div> <dl style="padding-right:1em"> <xsl:for-each select="channel/item"> <dd> <xsl:element name="a"> <xsl:attribute name="href"> <xsl:value-of select="link"/> </xsl:attribute> <xsl:value-of select="title"/> </xsl:element> </dd> <dt> <xsl:value-of select="description" /><br /> <span class="comments"><xsl:value-of select="pubDate" /></span> </dt> </xsl:for-each> </dl> </div> <div id="footer"> <xsl:value-of select="channel/copyright" /> </div> </body> </html> </xsl:template> </xsl:stylesheet> '
</methods> <methods> Seaside.RRStylesTwo <category>css</category>
style ^' channel link, channel language, channel copyright, channel managingEditor, channel webMaster, channel docs, channel lastBuildDate { display:none; } rss { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:0.7em; line-height:130%; margin:1em; } /* HEADER */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ channel title { display:block; padding:0.4em 0.2em; color:#FFF; border-bottom:1px solid black; font-weight:bold; font-size:140%; background-color:#4483C7; } channel description { display:block; float:left; font-size:130%; font-weight:bold; margin:0.5em; } /* CONTENT */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ channel item { background-color:#FFFFEE; border:1px solid #538620; clear:both; display:block; padding:0 0 0.5em; margin:1em; } channel item title { background-color:#538620; border-bottom-width:0; color:#FFF; display:block; font-size:110%; font-weight:bold; margin:0; padding:0.3em 0.5em; } channel item description { display: block; float:none; margin:0; text-align: left; padding:0.2em 0.5em 0.4em; color: black; font-size:100%; font-weight:normal; } channel item link { color:#666; display:block; font-size:86%; padding:0 0.5em; } channel item pubDate { color:#666; display:block; font-size:86%; padding:0 0.5em; } '
</methods> <methods> Seaside.RRStylesTwo <category>css</category>
style2 ^' channel link, channel language, channel copyright, channel managingEditor, channel webMaster, channel docs, channel lastBuildDate { display:none; } rss { font-family:Verdana, Arial, Helvetica, sans-serif; font-size:0.7em; line-height:130%; margin:1em; } /* HEADER */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ channel title { display:block; padding:0.4em 0.2em; color:#FFF; border-bottom:1px solid black; font-weight:bold; font-size:140%; background-color:#4483C7; } channel description { display:block; float:left; font-size:130%; font-weight:bold; margin:0.5em; } /* CONTENT */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ channel item { background-color:#FFFFEE; border:1px solid #538620; clear:both; display:block; padding:0 0 0.5em; margin:1em; } channel item title { background-color:#538620; border-bottom-width:0; color:#FFF; display:block; font-size:110%; font-weight:bold; margin:0; padding:0.3em 0.5em; } channel item description { display: block; float:none; margin:0; text-align: left; padding:0.2em 0.5em 0.4em; color: black; font-size:100%; font-weight:normal; } channel item link { color:#666; display:block; font-size:86%; padding:0 0.5em; } channel item pubDate { color:#666; display:block; font-size:86%; padding:0 0.5em; } '
</methods> <methods> Seaside.RRChangesDemo class <category>accessing</category>
description ^'An RSS feed about recent changes to image ' , SeasidePlatformSupport shortImageName
</methods> <methods> Seaside.RRChangesDemo class <category>initialization</category>
initialize "Can be registered again, now that it works. This will cause the RSS symbol to show up in the url field of Safari and Firefox when using the dispatcher manager and viewer" self registerAsApplication: 'changes.rss'
</methods> <methods> Seaside.RRChangesDemo class <category>testing</category>
canBeRoot ^true
</methods> <methods> Seaside.RRCloudTag class <category>accessing-tags</category>
tags " self generateTags " ^ #( ('item' item item: 'item') ('title' title title: 'channel-required') ('link' link link: 'channel-required') ('description' description description: 'channel-required') ('language' language language: 'channel-optional') ('copyright' copyright copyright: 'channel-optional') ('managingEditor' managingEditor managingEditor: 'channel-optional') ('webMaster' webMaster webMaster: 'channel-optional') ('pubDate' publicationDate publicationDate: 'channel-optional') ('lastBuildDate' lastBuildDate lastBuildDate: 'channel-optional') ('category' category category: 'channel-optional') ('generator' generator generator: 'channel-optional') ('docs' documentation documentation: 'channel-optional') ('cloud' cloud cloud: 'channel-optional') ('ttl' timeToLive timeToLive: 'channel-optional') ('image' image image: 'channel-optional') ('rating' rating rating: 'channel-optional') ('textInput' textInput textInput: 'channel-optional') ('skipHours' skipHours skipHours: 'channel-optional') ('skipDays' skipDays skipDays: 'channel-optional') ('comments' comments comments: 'item-optional') ('enclosure' enclosure enclosure: 'item-optional') ('guid' guid guid: 'item-optional') ('name' name name: 'image-required') )
</methods> <methods> Seaside.RRComponent class <category>testing</category>
isFeed ^true
</methods> <methods> Seaside.RRComponent class <category>initialization</category>
registerAsApplication: aString ^(super registerAsApplication: aString) preferenceAt: #sessionClass put: RRRssSession; preferenceAt: #mainClass put: RRRssRenderLoopMain; yourself
</methods> <methods> Seaside.RRDemo class <category>accessing</category>
description ^'RSS Demo'
</methods> <methods> Seaside.RRDemo class <category>testing</category>
canBeRoot ^true
</methods> <methods> Seaside.RREmailAddress class <category>instance creation</category>
address: aString ^self new address: aString; yourself
</methods> <methods> Seaside.RREmailAddress class <category>instance creation</category>
address: anAddressString username: aUsernameString ^self new address: anAddressString; username: aUsernameString; yourself
</methods> <methods> Seaside.RRLanguageTag class <category>accessing</category>
generatedCategory ^'languages-generated'
</methods> <methods> Seaside.RRLanguageTag class <category>generating</category>
generateTags ^self codes do: [ :each | self generateFor: each ]
</methods> <methods> Seaside.RRLanguageTag class <category>generating</category>
generateFor: aPair (self includesSelector: aPair first) ifFalse: [ self compile: aPair first, ' self with: ''', aPair last, '''' classified: self generatedCategory ]
</methods> <methods> Seaside.RRLanguageTag class <category>accessing</category>
codes ^Array streamContents: [ :stream | self codesString lines do: [ :line | stream nextPut: (Array with: (line copyUpTo: Character tab) asLegalSelector with: (line copyAfter: Character tab)) ] ]
</methods> <methods> Seaside.RRLanguageTag class <category>accessing</category>
codesString ^ 'Afrikaans af Albanian sq Basque eu Belarusian be Bulgarian bg Catalan ca Chinese (Simplified) zh-cn Chinese (Traditional) zh-tw Croatian hr Czech cs Danish da Dutch nl Dutch (Belgium) nl-be Dutch (Netherlands) nl-nl English en English (Australia) en-au English (Belize) en-bz English (Canada) en-ca English (Ireland) en-ie English (Jamaica) en-jm English (New Zealand) en-nz English (Phillipines) en-ph English (South Africa) en-za English (Trinidad) en-tt English (United Kingdom) en-gb English (United States) en-us English (Zimbabwe) en-zw Estonian et Faeroese fo Finnish fi French fr French (Belgium) fr-be French (Canada) fr-ca French (France) fr-fr French (Luxembourg) fr-lu French (Monaco) fr-mc French (Switzerland) fr-ch Galician gl Gaelic gd German de German (Austria) de-at German (Germany) de-de German (Liechtenstein) de-li German (Luxembourg) de-lu German (Switzerland) de-ch Greek el Hawaiian haw Hungarian hu Icelandic is Indonesian in Irish ga Italian it Italian (Italy) it-it Italian (Switzerland) it-ch Japanese ja Korean ko Macedonian mk Norwegian no Polish pl Portuguese pt Portuguese (Brazil) pt-br Portuguese (Portugal) pt-pt Romanian ro Romanian (Moldova) ro-mo Romanian (Romania) ro-ro Russian ru Russian (Moldova) ru-mo Russian (Russia) ru-ru Serbian sr Slovak sk Slovenian sl Spanish es Spanish (Argentina) es-ar Spanish (Bolivia) es-bo Spanish (Chile) es-cl Spanish (Colombia) es-co Spanish (Costa Rica) es-cr Spanish (Dominican Republic) es-do Spanish (Ecuador) es-ec Spanish (El Salvador) es-sv Spanish (Guatemala) es-gt Spanish (Honduras) es-hn Spanish (Mexico) es-mx Spanish (Nicaragua) es-ni Spanish (Panama) es-pa Spanish (Paraguay) es-py Spanish (Peru) es-pe Spanish (Puerto Rico) es-pr Spanish (Spain) es-es Spanish (Uruguay) es-uy Spanish (Venezuela) es-ve Swedish sv Swedish (Finland) sv-fi Swedish (Sweden) sv-se Turkish tr Ukranian uk'
</methods> <methods> Seaside.RRRfc822DateTime class <category>instance creation</category>
newDateAndTime: aDateAndTime ^self newDateAndTime: aDateAndTime offset: aDateAndTime offset
</methods> <methods> Seaside.RRRfc822DateTime class <category>instance creation</category>
dateAndTime: aDateAndTime timezoneString: aString ^self new dateAndTime: aDateAndTime; timezoneString: aString; yourself
</methods> <methods> Seaside.RRRfc822DateTime class <category>instance creation</category>
newUtc: aDateAndTime ^self dateAndTime: aDateAndTime asUTC timezoneString: 'UT'
</methods> <methods> Seaside.RRRfc822DateTime class <category>private</category>
offsetString: aDuration ^String streamContents: [ :stream | | positive | positive := aDuration asSeconds > 0 or: [ aDuration asSeconds = 0 and: [ aDuration nanoSeconds > 0 ] ]. stream nextPut: (positive ifTrue: [ $+ ] ifFalse: [ $- ]). stream nextPutAll: (aDuration hours printPaddedWith: $0 to: 2). stream nextPutAll: (aDuration minutes printPaddedWith: $0 to: 2) ]
</methods> <methods> Seaside.RRRfc822DateTime class <category>instance creation</category>
newDateAndTime: aDateAndTime offset: aDuration ^self dateAndTime: aDateAndTime timezoneString: (self offsetString: aDuration)
</methods> <methods> Seaside.RRRssRenderCanvas class <category>encoding</category>
encode: anObject ^(Smalltalk hasClassNamed: #WAAbstractHtmlBuilder) ifTrue: [ (Smalltalk classNamed: #WAAbstractHtmlBuilder) encode: anObject ] ifFalse: [ super encode: anObject ]
</methods> <methods> Seaside.RRRssRenderCanvas class <category>instance creation</category>
context: aRenderingContext callbacks: aCallbackStore ^ self basicNew initializeWithContext: aRenderingContext callbacks: aCallbackStore
</methods> <methods> Seaside.RRRssRenderCanvas class <category>accessing-tags</category>
tags " self generateTags " ^ #( ('item' item item: 'item') ('title' title title: 'channel-required') ('link' link link: 'channel-required') ('description' description description: 'channel-required') ('language' language language: 'channel-optional') ('copyright' copyright copyright: 'channel-optional') ('managingEditor' managingEditor managingEditor: 'channel-optional') ('webMaster' webMaster webMaster: 'channel-optional') ('pubDate' publicationDate publicationDate: 'channel-optional') ('lastBuildDate' lastBuildDate lastBuildDate: 'channel-optional') ('category' category category: 'channel-optional') ('generator' generator generator: 'channel-optional') ('docs' documentation documentation: 'channel-optional') ('cloud' cloud cloud: 'channel-optional') ('ttl' timeToLive timeToLive: 'channel-optional') ('image' image image: 'channel-optional') ('rating' rating rating: 'channel-optional') ('textInput' textInput textInput: 'channel-optional') ('skipHours' skipHours skipHours: 'channel-optional') ('skipDays' skipDays skipDays: 'channel-optional') ('author' author author: 'item-optional') ('comments' comments comments: 'item-optional') ('enclosure' enclosure enclosure: 'item-optional') ('guid' guid guid: 'item-optional') ('source' source source: 'item-optional') ('language' language language: 'item-optional') ('width' width width: 'image-optional') ('height' height height: 'image-optional') ('name' name name: 'textinput-required') ('hour' hour hour: 'skipHours') ('day' day day: 'skipDays') ('url' url url: 'image') )
</methods> <methods> Seaside.RRRssRenderCanvas class <category>generating-tags</category>
generateUnaryFor: aCollection (self includesSelector: aCollection second) ifFalse: [ self compile: aCollection second, ' ^ self ', (self patternFor: aCollection first) classified: aCollection fourth ]
</methods> <methods> Seaside.RRRssRenderCanvas class <category>generating-tags</category>
generateBinaryFor: aCollection (aCollection size = 4 and: [(self includesSelector: aCollection third) not]) ifTrue: [ self compile: aCollection third, ' aBlock self ', aCollection second, ' with: aBlock' classified: aCollection fourth]
</methods> <methods> Seaside.RRRssRoot class <category>accessing</category>
defaultContentType ^'application/rss+xml' "; charset=utf-8"
</methods> <methods> Seaside.RRRssStreamDocument class <category>inner-html</category>
forHtml ^self new forHtml
</methods> <initialize> Seaside.RRChangesDemo </initialize>