1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
{\rtf1\ansi\ansicpg10000\cocoartf102{\fonttbl\f0\fnil Vera Sans;}
\paperw9680\paperh10120\hyphauto1\hyphfactor0\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql\f0\fs20 \uc0 \par
\pard\ql\fs32\b\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\qc \uc0 RSSKit 2 Specification\fs20\b0 \uc0 \par
Feb 14 2007\par
\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5300\tx5960\tx6600\tx7720\qc \uc0 G\'FCnther Noack\par
\pard\ql\pard\tx0\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\ql \uc0 \par
\fs26\b \uc0 Disclaimer\fs20\b0 \uc0 \par
\par
This document describes the RSSKit 2 and how it can be used by programmers. No guarantee for completeness is given.\par
\par
\par
\fs26\b \uc0 Lessons learned from RSSKit 1\fs20\b0 \uc0 \par
\par
<WHINING MODE>\par
\par
RSSKit 1 had a feed and an article class. What felt like the natural way to model RSS proved to become very complicated when applications needed to extend these classes. Suddenly RSSKit had to support storing these articles and feeds to the disk. Complicated mechanisms had to be (re)invented to coordinate the ridiciously tight coupling between class and subclass across framework borders.\par
\par
I tried to improve the situation in late 2006 by applying framework design techniques I just learned in a Software Architecture class. This involved introducing interfaces (Objective-C "formal protocols") for RSSFeed and RSSArticle. Using interfaces was quite nice, but it didn\rquote t play well with the relatively tight coupling between classes which I already had. (You can\rquote t subclass an interface.)\par
\par
You may have noticed that I kept adding more and more code which didn\rquote t actually relate to the core functionality of RSSKit, which - of course - is RSS file parsing.\par
\par
</WHINING MODE>\par
\par
This is why both the RSSFeed and the RSSArticle class are now abandoned from RSSKit. What\rquote s left is just the parser itself. No background URL fetching. No storing of data structures to .plist files. No undocumented hook methods in RSSFeed to make subclassing possible.\par
\par
As the two only classes visible to the user in RSSKit now disappeared, the RSSKit API changes drastically, which is why the major version number was increased by one.\par
\par
\par
\fs26\b \uc0 Short description\fs20\b0 \uc0 \par
\par
RSSKit is a GNUstep/Cocoa Objective-C framework that interprets RSS files from the world wide web and provides their content to the user in a simple way. Supported formats include:\par
\par
\tab - RSS 0.9\par
\tab - RSS 1.0\par
\tab - RSS 2.0\par
\tab - Atom 0.3\par
\tab - Atom 1.0\par
\par
\par
\fs26\b \uc0 Goals\fs20\b0 \uc0 \par
\par
\tab - Parse all of the above mentioned file formats and hand everything found to\par
\tab a delegate object not in the Kit.\par
\tab - Abstract from the different RSS-type formats and subsum them as "RSS"\par
\par
\par
\fs26\b \uc0 Non-goals\fs20\b0 \uc0 \par
\par
\tab - Storing and saving RSS feeds and articles to and from Plists.\par
\tab - Providing a feed and a article class\par
\par
\par
\fs26\b \uc0 Overview for users\fs20\b0 \uc0 \par
\par
Everything the user needs to know about RSSKit is the FeedParser class and the informal protocol for its delegate. These can be found in the main directory of RSSKit in the file FeedProtocol.h, but are also described below.\par
\par
\par
\fs26\b \uc0 Overview for RSSKit developers\fs20\b0 \uc0 \par
\par
FIXME\par
\par
\par
\fs26\b \uc0 Porting a RSSKit 1 application to RSSKit 2\fs20\b0 \uc0 \par
\par
There\rquote s no article class and no feed class any more. If you use these classes everywhere in your application, write your own implementation. (Do \i \uc0 not\i0 \uc0 copy them from RSSKit 1, these classes are a complete mess.) Write a FeedParser delegate class that creates articles for you.\par
\par
If you completely ignored the feed and article classes in your code and used them only to store the article contents into your own data structures, simply write a FeedParser delegate class which does this directly.\par
}
|