From 09794c92f7ee6ac4c1a2be3087de7de99f9dde5e Mon Sep 17 00:00:00 2001 From: relikd Date: Sun, 19 Aug 2018 23:30:48 +0200 Subject: [PATCH] Fixing Bugs & Adding subtitle to feeds --- RSXML/RSAtomParser.m | 21 +++++++++++++++++++-- RSXML/RSParsedArticle.m | 4 ++++ RSXML/RSParsedFeed.h | 1 + RSXML/RSParsedFeed.m | 4 ++++ RSXML/RSRSSParser.m | 6 ++++++ RSXML/RSSAXParser.m | 1 + 6 files changed, 35 insertions(+), 2 deletions(-) mode change 100644 => 100755 RSXML/RSAtomParser.m mode change 100644 => 100755 RSXML/RSParsedArticle.m mode change 100644 => 100755 RSXML/RSParsedFeed.h mode change 100644 => 100755 RSXML/RSParsedFeed.m mode change 100644 => 100755 RSXML/RSRSSParser.m diff --git a/RSXML/RSAtomParser.m b/RSXML/RSAtomParser.m old mode 100644 new mode 100755 index 4def3a4..2249d82 --- a/RSXML/RSAtomParser.m +++ b/RSXML/RSAtomParser.m @@ -31,6 +31,7 @@ @property (nonatomic) NSMutableString *xhtmlString; @property (nonatomic) NSString *link; @property (nonatomic) NSString *title; +@property (nonatomic) NSString *subtitle; @property (nonatomic) NSMutableArray *articles; @property (nonatomic) NSDate *dateParsed; @property (nonatomic) RSSAXParser *parser; @@ -110,6 +111,7 @@ [self parse]; RSParsedFeed *parsedFeed = [[RSParsedFeed alloc] initWithURLString:self.urlString title:self.title link:self.link articles:self.articles]; + parsedFeed.subtitle = self.subtitle; return parsedFeed; } @@ -141,6 +143,9 @@ static const NSInteger kIDLength = 3; static const char *kTitle = "title"; static const NSInteger kTitleLength = 6; +static const char *kSubtitle = "subtitle"; +static const NSInteger kSubtitleLength = 9; + static const char *kContent = "content"; static const NSInteger kContentLength = 8; @@ -274,6 +279,13 @@ static const NSInteger kSelfLength = 5; } } +- (void)addFeedSubtitle { + + if (self.subtitle.length < 1) { + self.subtitle = self.parser.currentStringWithTrimmedWhitespace; + } +} + - (void)addLink { NSString *urlString = self.currentAttributes[kHrefKey]; @@ -498,8 +510,13 @@ static const NSInteger kSelfLength = 5; self.parsingSource = NO; } - else if (!self.parsingArticle && !self.parsingSource && RSSAXEqualTags(localName, kTitle, kTitleLength)) { - [self addFeedTitle]; + else if (!self.parsingArticle && !self.parsingSource) { + if (RSSAXEqualTags(localName, kTitle, kTitleLength)) { + [self addFeedTitle]; + } + else if (RSSAXEqualTags(localName, kSubtitle, kSubtitleLength)) { + [self addFeedSubtitle]; + } } [self.attributesStack removeLastObject]; } diff --git a/RSXML/RSParsedArticle.m b/RSXML/RSParsedArticle.m old mode 100644 new mode 100755 index 7104c1d..b822ab7 --- a/RSXML/RSParsedArticle.m +++ b/RSXML/RSParsedArticle.m @@ -97,5 +97,9 @@ (void)self.articleID; } +- (NSString*)description { + return [NSString stringWithFormat:@"{%@ '%@', guid: %@}", [self class], self.title, self.guid]; +} + @end diff --git a/RSXML/RSParsedFeed.h b/RSXML/RSParsedFeed.h old mode 100644 new mode 100755 index 7876f68..3cffcac --- a/RSXML/RSParsedFeed.h +++ b/RSXML/RSParsedFeed.h @@ -17,6 +17,7 @@ @property (nonatomic, readonly, nonnull) NSString *urlString; @property (nonatomic, readonly, nullable) NSString *title; @property (nonatomic, readonly, nullable) NSString *link; +@property (nonatomic, nullable) NSString *subtitle; @property (nonatomic, readonly, nonnull) NSSet *articles; @end diff --git a/RSXML/RSParsedFeed.m b/RSXML/RSParsedFeed.m old mode 100644 new mode 100755 index 330b7da..f4c7a56 --- a/RSXML/RSParsedFeed.m +++ b/RSXML/RSParsedFeed.m @@ -25,5 +25,9 @@ return self; } +- (NSString*)description { + return [NSString stringWithFormat:@"{%@ (%@), title: '%@', subtitle: '%@', entries: %@}", + [self class], _link, _title, _subtitle, _articles]; +} @end diff --git a/RSXML/RSRSSParser.m b/RSXML/RSRSSParser.m old mode 100644 new mode 100755 index 374f42f..1c75541 --- a/RSXML/RSRSSParser.m +++ b/RSXML/RSRSSParser.m @@ -31,6 +31,7 @@ @property (nonatomic) BOOL endRSSFound; @property (nonatomic) NSString *link; @property (nonatomic) NSString *title; +@property (nonatomic) NSString *subtitle; @property (nonatomic) NSDate *dateParsed; @end @@ -105,6 +106,7 @@ [self parse]; RSParsedFeed *parsedFeed = [[RSParsedFeed alloc] initWithURLString:self.urlString title:self.title link:self.link articles:self.articles]; + parsedFeed.subtitle = self.subtitle; return parsedFeed; } @@ -236,6 +238,10 @@ static const NSInteger kTrueLength = 5; else if (RSSAXEqualTags(localName, kTitle, kTitleLength)) { self.title = self.parser.currentStringWithTrimmedWhitespace; } + + else if (RSSAXEqualTags(localName, kDescription, kDescriptionLength)) { + self.subtitle = self.parser.currentStringWithTrimmedWhitespace; + } } diff --git a/RSXML/RSSAXParser.m b/RSXML/RSSAXParser.m index 5bbbc6e..001d8e5 100644 --- a/RSXML/RSSAXParser.m +++ b/RSXML/RSSAXParser.m @@ -8,6 +8,7 @@ #import #import +#import #import "RSSAXParser.h" #import "RSXMLInternal.h"