Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e04a347c1e | ||
|
|
8d3326e532 | ||
|
|
40aa75beb1 | ||
|
|
43fffb3923 | ||
|
|
2e46fdc8fd |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
RSXML2Tests/Resources/* -linguist-detectable
|
||||||
@@ -30,7 +30,7 @@ In the previous version, the test case for parsing a non-opml file (with `RSOPML
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```
|
```objc
|
||||||
RSXMLData *xmlData = [[RSXMLData alloc] initWithData:d urlString:@"https://www.example.org"];
|
RSXMLData *xmlData = [[RSXMLData alloc] initWithData:d urlString:@"https://www.example.org"];
|
||||||
// TODO: check xmlData.parserError
|
// TODO: check xmlData.parserError
|
||||||
RSFeedParser *parser = [RSFeedParser parserWithXMLData:xmlData];
|
RSFeedParser *parser = [RSFeedParser parserWithXMLData:xmlData];
|
||||||
@@ -44,7 +44,7 @@ RSParsedFeed *document = [parser parseSync:&parseError];
|
|||||||
|
|
||||||
If you don't care about the parser used to decode the data, `[xmlData getParser]` will return the most suitable parser. You can use that parser right away to call `parseSync:`. Anyway, you can also parse the XML file asynchronously with `parseAsync:`.
|
If you don't care about the parser used to decode the data, `[xmlData getParser]` will return the most suitable parser. You can use that parser right away to call `parseSync:`. Anyway, you can also parse the XML file asynchronously with `parseAsync:`.
|
||||||
|
|
||||||
```
|
```objc
|
||||||
[[xmlData getParser] parseAsync:^(RSParsedFeed *parsedDocument, NSError *error) {
|
[[xmlData getParser] parseAsync:^(RSParsedFeed *parsedDocument, NSError *error) {
|
||||||
// process feed items ...
|
// process feed items ...
|
||||||
}];
|
}];
|
||||||
|
|||||||
@@ -417,8 +417,8 @@
|
|||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 0700;
|
LastSwiftUpdateCheck = 0700;
|
||||||
LastUpgradeCheck = 0700;
|
LastUpgradeCheck = 1200;
|
||||||
ORGANIZATIONNAME = "relikd";
|
ORGANIZATIONNAME = relikd;
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
84AD0C041E11B7D200B38510 = {
|
84AD0C041E11B7D200B38510 = {
|
||||||
CreatedOnToolsVersion = 8.2.1;
|
CreatedOnToolsVersion = 8.2.1;
|
||||||
@@ -435,10 +435,11 @@
|
|||||||
};
|
};
|
||||||
buildConfigurationList = 84F22C071B52DDEA000060CE /* Build configuration list for PBXProject "RSXML2" */;
|
buildConfigurationList = 84F22C071B52DDEA000060CE /* Build configuration list for PBXProject "RSXML2" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 3.2";
|
||||||
developmentRegion = English;
|
developmentRegion = en;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
en,
|
en,
|
||||||
|
Base,
|
||||||
);
|
);
|
||||||
mainGroup = 84F22C031B52DDEA000060CE;
|
mainGroup = 84F22C031B52DDEA000060CE;
|
||||||
productRefGroup = 84F22C0E1B52DDEA000060CE /* Products */;
|
productRefGroup = 84F22C0E1B52DDEA000060CE /* Products */;
|
||||||
@@ -615,7 +616,9 @@
|
|||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
@@ -626,7 +629,11 @@
|
|||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
@@ -684,7 +691,9 @@
|
|||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
@@ -695,7 +704,11 @@
|
|||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0830"
|
LastUpgradeVersion = "1200"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
@@ -27,6 +27,15 @@
|
|||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
|
<MacroExpansion>
|
||||||
|
<BuildableReference
|
||||||
|
BuildableIdentifier = "primary"
|
||||||
|
BlueprintIdentifier = "84F22C0C1B52DDEA000060CE"
|
||||||
|
BuildableName = "RSXML2.framework"
|
||||||
|
BlueprintName = "RSXML2"
|
||||||
|
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||||
|
</BuildableReference>
|
||||||
|
</MacroExpansion>
|
||||||
<Testables>
|
<Testables>
|
||||||
<TestableReference
|
<TestableReference
|
||||||
skipped = "NO">
|
skipped = "NO">
|
||||||
@@ -39,17 +48,6 @@
|
|||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</TestableReference>
|
</TestableReference>
|
||||||
</Testables>
|
</Testables>
|
||||||
<MacroExpansion>
|
|
||||||
<BuildableReference
|
|
||||||
BuildableIdentifier = "primary"
|
|
||||||
BlueprintIdentifier = "84F22C0C1B52DDEA000060CE"
|
|
||||||
BuildableName = "RSXML2.framework"
|
|
||||||
BlueprintName = "RSXML2"
|
|
||||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
|
||||||
</BuildableReference>
|
|
||||||
</MacroExpansion>
|
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
@@ -70,8 +68,6 @@
|
|||||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0830"
|
LastUpgradeVersion = "1200"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
@@ -29,8 +29,6 @@
|
|||||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
<Testables>
|
<Testables>
|
||||||
</Testables>
|
</Testables>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Debug"
|
buildConfiguration = "Debug"
|
||||||
@@ -51,8 +49,6 @@
|
|||||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
<AdditionalOptions>
|
|
||||||
</AdditionalOptions>
|
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Release"
|
||||||
|
|||||||
@@ -23,6 +23,10 @@
|
|||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface NSDictionary (RSXML)
|
@interface NSDictionary (RSXML)
|
||||||
- (nullable id)rsxml_objectForCaseInsensitiveKey:(NSString *)key;
|
- (nullable id)rsxml_objectForCaseInsensitiveKey:(NSString *)key;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface NSString (RSXML)
|
@interface NSString (RSXML)
|
||||||
|
|
||||||
- (NSString *)rsxml_stringByDecodingHTMLEntities;
|
- (NSString *)rsxml_stringByDecodingHTMLEntities;
|
||||||
@@ -32,3 +34,4 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
#import "RSFeedParser.h"
|
#import <RSXML2/RSFeedParser.h>
|
||||||
|
|
||||||
// <feed> <entry>
|
// <feed> <entry>
|
||||||
// https://validator.w3.org/feed/docs/rfc4287.html
|
// https://validator.w3.org/feed/docs/rfc4287.html
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
#import "RSXMLParser.h"
|
#import <RSXML2/RSXMLParser.h>
|
||||||
|
|
||||||
@class RSParsedFeed, RSParsedArticle;
|
@class RSParsedFeed, RSParsedArticle;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
#import "RSXMLParser.h"
|
#import <RSXML2/RSXMLParser.h>
|
||||||
|
|
||||||
@class RSHTMLMetadataAnchor;
|
@class RSHTMLMetadataAnchor;
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ typedef enum {
|
|||||||
RSFeedTypeAtom
|
RSFeedTypeAtom
|
||||||
} RSFeedType;
|
} RSFeedType;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
RSFeedType RSFeedTypeFromLinkTypeAttribute(NSString * typeStr);
|
RSFeedType RSFeedTypeFromLinkTypeAttribute(NSString * typeStr);
|
||||||
|
|
||||||
|
|
||||||
@@ -65,3 +67,5 @@ RSFeedType RSFeedTypeFromLinkTypeAttribute(NSString * typeStr);
|
|||||||
@interface RSHTMLMetadataAnchor : RSHTMLMetadataLink // title: anchor text-value
|
@interface RSHTMLMetadataAnchor : RSHTMLMetadataLink // title: anchor text-value
|
||||||
@property (nonatomic, copy, nullable) NSString *tooltip;
|
@property (nonatomic, copy, nullable) NSString *tooltip;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
#import "RSXMLParser.h"
|
#import <RSXML2/RSXMLParser.h>
|
||||||
|
|
||||||
@class RSHTMLMetadata;
|
@class RSHTMLMetadata;
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,8 @@
|
|||||||
#define OPML_EXPORT 0
|
#define OPML_EXPORT 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
// OPML allows for arbitrary attributes.
|
// OPML allows for arbitrary attributes.
|
||||||
// These are the common attributes in OPML files used as RSS subscription lists.
|
// These are the common attributes in OPML files used as RSS subscription lists.
|
||||||
|
|
||||||
@@ -55,7 +57,7 @@
|
|||||||
/// Sets a value in the internal dictionary (creates new empty dictionary if necessary).
|
/// Sets a value in the internal dictionary (creates new empty dictionary if necessary).
|
||||||
- (void)setAttribute:(id)value forKey:(NSString *)key;
|
- (void)setAttribute:(id)value forKey:(NSString *)key;
|
||||||
/// @return Value for key (case-independent).
|
/// @return Value for key (case-independent).
|
||||||
- (id)attributeForKey:(NSString *)key;
|
- (nullable id)attributeForKey:(NSString *)key;
|
||||||
|
|
||||||
/// Print object description for debugging purposes.
|
/// Print object description for debugging purposes.
|
||||||
- (NSString *)recursiveDescription;
|
- (NSString *)recursiveDescription;
|
||||||
@@ -64,3 +66,5 @@
|
|||||||
- (NSXMLDocument *)exportXML;
|
- (NSXMLDocument *)exportXML;
|
||||||
#endif
|
#endif
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
#import "RSXMLParser.h"
|
#import <RSXML2/RSXMLParser.h>
|
||||||
|
|
||||||
// <opml> <outline>
|
// <opml> <outline>
|
||||||
// http://dev.opml.org/spec2.html#subscriptionLists
|
// http://dev.opml.org/spec2.html#subscriptionLists
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/// Parsed result type for articles. Does contain article specific attributes like abstract and content.
|
/// Parsed result type for articles. Does contain article specific attributes like abstract and content.
|
||||||
@interface RSParsedArticle : NSObject
|
@interface RSParsedArticle : NSObject
|
||||||
@property (nonatomic, readonly, nonnull) NSURL *feedURL;
|
@property (nonatomic, readonly, nonnull) NSURL *feedURL;
|
||||||
@@ -47,3 +49,4 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@class RSParsedArticle;
|
@class RSParsedArticle;
|
||||||
|
|
||||||
/// Parsed result type for feeds. Does contain feed specific attributes and a sorted list or articles.
|
/// Parsed result type for feeds. Does contain feed specific attributes and a sorted list or articles.
|
||||||
@@ -41,3 +43,5 @@
|
|||||||
- (RSParsedArticle *)appendNewArticle;
|
- (RSParsedArticle *)appendNewArticle;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
#import "RSFeedParser.h"
|
#import <RSXML2/RSFeedParser.h>
|
||||||
|
|
||||||
// <channel> <item>
|
// <channel> <item>
|
||||||
// https://cyber.harvard.edu/rss/rss.html
|
// https://cyber.harvard.edu/rss/rss.html
|
||||||
|
|||||||
@@ -23,7 +23,9 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
#import "RSXMLParser.h"
|
#import <RSXML2/RSXMLParser.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@class RSXMLParser;
|
@class RSXMLParser;
|
||||||
|
|
||||||
@@ -42,3 +44,5 @@
|
|||||||
- (BOOL)canParseData;
|
- (BOOL)canParseData;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
@@ -22,13 +22,15 @@
|
|||||||
// SOFTWARE.
|
// SOFTWARE.
|
||||||
|
|
||||||
@import Foundation;
|
@import Foundation;
|
||||||
#import "RSSAXParser.h"
|
#import <RSXML2/RSSAXParser.h>
|
||||||
|
|
||||||
#define EqualBytes(bytes1, bytes2, length) (memcmp(bytes1, bytes2, length) == 0)
|
#define EqualBytes(bytes1, bytes2, length) (memcmp(bytes1, bytes2, length) == 0)
|
||||||
//#define EqualBytes(bytes1, bytes2, length) (!strncmp(bytes1, bytes2, length))
|
//#define EqualBytes(bytes1, bytes2, length) (!strncmp(bytes1, bytes2, length))
|
||||||
|
|
||||||
@class RSXMLData;
|
@class RSXMLData;
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
// | MARK: - Parser Delegate
|
// | MARK: - Parser Delegate
|
||||||
// ---------------------------------------------------------------
|
// ---------------------------------------------------------------
|
||||||
@@ -55,7 +57,7 @@
|
|||||||
/// @return @c YES if parser supports parsing HTML files.
|
/// @return @c YES if parser supports parsing HTML files.
|
||||||
+ (BOOL)isHTMLParser;
|
+ (BOOL)isHTMLParser;
|
||||||
/// Will be called after the parsing is finished. @return Reference to parsed object.
|
/// Will be called after the parsing is finished. @return Reference to parsed object.
|
||||||
- (id)xmlParserWillReturnDocument;
|
- (nullable id)xmlParserWillReturnDocument;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
@@ -91,3 +93,4 @@
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
||||||
|
|||||||
Reference in New Issue
Block a user