Make it build. Add a README.

This commit is contained in:
Brent Simmons
2017-06-25 16:32:07 -07:00
parent 1ad4474b29
commit e9c19e427a
41 changed files with 454 additions and 485 deletions

View File

@@ -10,12 +10,12 @@
/*Returns all <a href="some_url">some_text</a> as RSHTMLLink object array.*/
@class RSXMLData;
@class ParserData;
@class RSHTMLLink;
@interface RSHTMLLinkParser : NSObject
+ (NSArray <RSHTMLLink *> *)htmlLinksWithData:(RSXMLData *)xmlData;
+ (NSArray <RSHTMLLink *> *)htmlLinksWithParserData:(ParserData *)parserData;
@end

View File

@@ -10,14 +10,14 @@
#import "RSHTMLLinkParser.h"
#import "RSSAXHTMLParser.h"
#import "RSSAXParser.h"
#import "RSXMLData.h"
#import "RSXMLInternal.h"
#import "RSParserInternal.h"
#import <RSParser/RSParser-Swift.h>
@interface RSHTMLLinkParser() <RSSAXHTMLParserDelegate>
@property (nonatomic, readonly) NSMutableArray *links;
@property (nonatomic, readonly) RSXMLData *xmlData;
@property (nonatomic, readonly) ParserData *parserData;
@property (nonatomic, readonly) NSMutableArray *dictionaries;
@property (nonatomic, readonly) NSURL *baseURL;
@@ -38,19 +38,19 @@
#pragma mark - Class Methods
+ (NSArray *)htmlLinksWithData:(RSXMLData *)xmlData {
+ (NSArray *)HTMLMetadataWithParserData:(ParserData *)parserData {
RSHTMLLinkParser *parser = [[self alloc] initWithXMLData:xmlData];
RSHTMLLinkParser *parser = [[self alloc] initWithParserData:parserData];
return parser.links;
}
#pragma mark - Init
- (instancetype)initWithXMLData:(RSXMLData *)xmlData {
- (instancetype)initWithParserData:(ParserData *)parserData {
NSParameterAssert(xmlData.data);
NSParameterAssert(xmlData.urlString);
NSParameterAssert(parserData.data);
NSParameterAssert(parserData.url);
self = [super init];
if (!self) {
@@ -58,9 +58,9 @@
}
_links = [NSMutableArray new];
_xmlData = xmlData;
_parserData = parserData;
_dictionaries = [NSMutableArray new];
_baseURL = [NSURL URLWithString:xmlData.urlString];
_baseURL = [NSURL URLWithString:parserData.url];
[self parse];
@@ -73,7 +73,7 @@
- (void)parse {
RSSAXHTMLParser *parser = [[RSSAXHTMLParser alloc] initWithDelegate:self];
[parser parseData:self.xmlData.data];
[parser parseData:self.parserData.data];
[parser finishParsing];
}
@@ -127,7 +127,7 @@ static const NSInteger kAnchorLength = 2;
[self.links addObject:link];
NSDictionary *d = [SAXParser attributesDictionary:attributes];
if (!RSParser_IsEmpty(d)) {
if (!RSParserObjectIsEmpty(d)) {
[self handleLinkAttributes:d];
}

View File

@@ -7,7 +7,7 @@
//
#import "RSHTMLMetadata.h"
#import "RSXMLInternal.h"
#import "RSParserInternal.h"
static NSString *urlStringFromDictionary(NSDictionary *d);
static NSString *absoluteURLStringWithRelativeURLString(NSString *relativeURLString, NSString *baseURLString);

View File

@@ -10,17 +10,13 @@
@class RSHTMLMetadata;
@class RSXMLData;
@class ParserData;
NS_ASSUME_NONNULL_BEGIN
@interface RSHTMLMetadataParser : NSObject
+ (RSHTMLMetadata *)HTMLMetadataWithXMLData:(RSXMLData *)xmlData;
- (instancetype)initWithXMLData:(RSXMLData *)xmlData;
@property (nonatomic, readonly) RSHTMLMetadata *metadata;
+ (RSHTMLMetadata *)HTMLMetadataWithParserData:(ParserData *)parserData;
@end

View File

@@ -1,6 +1,6 @@
//
// RSHTMLMetadataParser.m
// RSXML
// RSParser
//
// Created by Brent Simmons on 3/6/16.
// Copyright © 2016 Ranchero Software, LLC. All rights reserved.
@@ -8,16 +8,15 @@
#import <libxml/xmlstring.h>
#import "RSHTMLMetadataParser.h"
#import "RSXMLData.h"
#import "RSHTMLMetadata.h"
#import "RSSAXHTMLParser.h"
#import "RSSAXParser.h"
#import "RSXMLInternal.h"
#import "RSParserInternal.h"
#import <RSParser/RSParser-Swift.h>
@interface RSHTMLMetadataParser () <RSSAXHTMLParserDelegate>
@property (nonatomic, readonly) RSXMLData *xmlData;
@property (nonatomic, readonly) ParserData *parserData;
@property (nonatomic, readwrite) RSHTMLMetadata *metadata;
@property (nonatomic) NSMutableArray *dictionaries;
@property (nonatomic) BOOL didFinishParsing;
@@ -30,26 +29,26 @@
#pragma mark - Class Methods
+ (RSHTMLMetadata *)HTMLMetadataWithXMLData:(RSXMLData *)xmlData {
+ (RSHTMLMetadata *)HTMLMetadataWithParserData:(ParserData *)parserData {
RSHTMLMetadataParser *parser = [[self alloc] initWithXMLData:xmlData];
RSHTMLMetadataParser *parser = [[self alloc] initWithParserData:parserData];
return parser.metadata;
}
#pragma mark - Init
- (instancetype)initWithXMLData:(RSXMLData *)xmlData {
- (instancetype)initWithParserData:(ParserData *)parserData {
NSParameterAssert(xmlData.data);
NSParameterAssert(xmlData.urlString);
NSParameterAssert(parserData.data);
NSParameterAssert(parserData.url);
self = [super init];
if (!self) {
return nil;
}
_xmlData = xmlData;
_parserData = parserData;
_dictionaries = [NSMutableArray new];
[self parse];
@@ -63,10 +62,10 @@
- (void)parse {
RSSAXHTMLParser *parser = [[RSSAXHTMLParser alloc] initWithDelegate:self];
[parser parseData:self.xmlData.data];
[parser parseData:self.parserData.data];
[parser finishParsing];
self.metadata = [[RSHTMLMetadata alloc] initWithURLString:self.xmlData.urlString dictionaries:[self.dictionaries copy]];
self.metadata = [[RSHTMLMetadata alloc] initWithURLString:self.parserData.url dictionaries:[self.dictionaries copy]];
}
@@ -121,7 +120,7 @@ static const NSInteger kLinkLength = 5;
}
NSDictionary *d = [SAXParser attributesDictionary:attributes];
if (!RSParser_IsEmpty(d)) {
if (!RSParserObjectIsEmpty(d)) {
[self handleLinkAttributes:d];
}
}

View File

@@ -11,7 +11,7 @@
#import <libxml/tree.h>
#import <libxml/xmlstring.h>
#import <libxml/HTMLparser.h>
#import "RSXMLInternal.h"
#import "RSParserInternal.h"
@interface RSSAXHTMLParser ()