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
|
||||
|
||||
```
|
||||
```objc
|
||||
RSXMLData *xmlData = [[RSXMLData alloc] initWithData:d urlString:@"https://www.example.org"];
|
||||
// TODO: check xmlData.parserError
|
||||
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:`.
|
||||
|
||||
```
|
||||
```objc
|
||||
[[xmlData getParser] parseAsync:^(RSParsedFeed *parsedDocument, NSError *error) {
|
||||
// process feed items ...
|
||||
}];
|
||||
|
||||
@@ -417,8 +417,8 @@
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastSwiftUpdateCheck = 0700;
|
||||
LastUpgradeCheck = 0700;
|
||||
ORGANIZATIONNAME = "relikd";
|
||||
LastUpgradeCheck = 1200;
|
||||
ORGANIZATIONNAME = relikd;
|
||||
TargetAttributes = {
|
||||
84AD0C041E11B7D200B38510 = {
|
||||
CreatedOnToolsVersion = 8.2.1;
|
||||
@@ -435,10 +435,11 @@
|
||||
};
|
||||
buildConfigurationList = 84F22C071B52DDEA000060CE /* Build configuration list for PBXProject "RSXML2" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
);
|
||||
mainGroup = 84F22C031B52DDEA000060CE;
|
||||
productRefGroup = 84F22C0E1B52DDEA000060CE /* Products */;
|
||||
@@ -615,7 +616,9 @@
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
@@ -626,7 +629,11 @@
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
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_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
@@ -684,7 +691,9 @@
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
CLANG_STATIC_ANALYZER_MODE = deep;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||
@@ -695,7 +704,11 @@
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||
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_MOVE = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
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"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0830"
|
||||
LastUpgradeVersion = "1200"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -27,6 +27,15 @@
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "84F22C0C1B52DDEA000060CE"
|
||||
BuildableName = "RSXML2.framework"
|
||||
BlueprintName = "RSXML2"
|
||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<Testables>
|
||||
<TestableReference
|
||||
skipped = "NO">
|
||||
@@ -39,17 +48,6 @@
|
||||
</BuildableReference>
|
||||
</TestableReference>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "84F22C0C1B52DDEA000060CE"
|
||||
BuildableName = "RSXML2.framework"
|
||||
BlueprintName = "RSXML2"
|
||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -70,8 +68,6 @@
|
||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
LastUpgradeVersion = "0830"
|
||||
LastUpgradeVersion = "1200"
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
@@ -29,8 +29,6 @@
|
||||
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
buildConfiguration = "Debug"
|
||||
@@ -51,8 +49,6 @@
|
||||
ReferencedContainer = "container:RSXML2.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
buildConfiguration = "Release"
|
||||
|
||||
@@ -23,6 +23,10 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSDictionary (RSXML)
|
||||
- (nullable id)rsxml_objectForCaseInsensitiveKey:(NSString *)key;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
@import Foundation;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface NSString (RSXML)
|
||||
|
||||
- (NSString *)rsxml_stringByDecodingHTMLEntities;
|
||||
@@ -32,3 +34,4 @@
|
||||
|
||||
@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
|
||||
// SOFTWARE.
|
||||
|
||||
#import "RSFeedParser.h"
|
||||
#import <RSXML2/RSFeedParser.h>
|
||||
|
||||
// <feed> <entry>
|
||||
// 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
|
||||
// SOFTWARE.
|
||||
|
||||
#import "RSXMLParser.h"
|
||||
#import <RSXML2/RSXMLParser.h>
|
||||
|
||||
@class RSParsedFeed, RSParsedArticle;
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// SOFTWARE.
|
||||
|
||||
@import Foundation;
|
||||
#import "RSXMLParser.h"
|
||||
#import <RSXML2/RSXMLParser.h>
|
||||
|
||||
@class RSHTMLMetadataAnchor;
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@ typedef enum {
|
||||
RSFeedTypeAtom
|
||||
} RSFeedType;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
RSFeedType RSFeedTypeFromLinkTypeAttribute(NSString * typeStr);
|
||||
|
||||
|
||||
@@ -65,3 +67,5 @@ RSFeedType RSFeedTypeFromLinkTypeAttribute(NSString * typeStr);
|
||||
@interface RSHTMLMetadataAnchor : RSHTMLMetadataLink // title: anchor text-value
|
||||
@property (nonatomic, copy, nullable) NSString *tooltip;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// SOFTWARE.
|
||||
|
||||
@import Foundation;
|
||||
#import "RSXMLParser.h"
|
||||
#import <RSXML2/RSXMLParser.h>
|
||||
|
||||
@class RSHTMLMetadata;
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
#define OPML_EXPORT 0
|
||||
#endif
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
// OPML allows for arbitrary attributes.
|
||||
// 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).
|
||||
- (void)setAttribute:(id)value forKey:(NSString *)key;
|
||||
/// @return Value for key (case-independent).
|
||||
- (id)attributeForKey:(NSString *)key;
|
||||
- (nullable id)attributeForKey:(NSString *)key;
|
||||
|
||||
/// Print object description for debugging purposes.
|
||||
- (NSString *)recursiveDescription;
|
||||
@@ -64,3 +66,5 @@
|
||||
- (NSXMLDocument *)exportXML;
|
||||
#endif
|
||||
@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
|
||||
// SOFTWARE.
|
||||
|
||||
#import "RSXMLParser.h"
|
||||
#import <RSXML2/RSXMLParser.h>
|
||||
|
||||
// <opml> <outline>
|
||||
// http://dev.opml.org/spec2.html#subscriptionLists
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
@import Foundation;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
/// Parsed result type for articles. Does contain article specific attributes like abstract and content.
|
||||
@interface RSParsedArticle : NSObject
|
||||
@property (nonatomic, readonly, nonnull) NSURL *feedURL;
|
||||
@@ -47,3 +49,4 @@
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
@import Foundation;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class RSParsedArticle;
|
||||
|
||||
/// Parsed result type for feeds. Does contain feed specific attributes and a sorted list or articles.
|
||||
@@ -41,3 +43,5 @@
|
||||
- (RSParsedArticle *)appendNewArticle;
|
||||
|
||||
@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
|
||||
// SOFTWARE.
|
||||
|
||||
#import "RSFeedParser.h"
|
||||
#import <RSXML2/RSFeedParser.h>
|
||||
|
||||
// <channel> <item>
|
||||
// https://cyber.harvard.edu/rss/rss.html
|
||||
|
||||
@@ -23,7 +23,9 @@
|
||||
// SOFTWARE.
|
||||
|
||||
@import Foundation;
|
||||
#import "RSXMLParser.h"
|
||||
#import <RSXML2/RSXMLParser.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class RSXMLParser;
|
||||
|
||||
@@ -42,3 +44,5 @@
|
||||
- (BOOL)canParseData;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -22,13 +22,15 @@
|
||||
// SOFTWARE.
|
||||
|
||||
@import Foundation;
|
||||
#import "RSSAXParser.h"
|
||||
#import <RSXML2/RSSAXParser.h>
|
||||
|
||||
#define EqualBytes(bytes1, bytes2, length) (memcmp(bytes1, bytes2, length) == 0)
|
||||
//#define EqualBytes(bytes1, bytes2, length) (!strncmp(bytes1, bytes2, length))
|
||||
|
||||
@class RSXMLData;
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
// | MARK: - Parser Delegate
|
||||
// ---------------------------------------------------------------
|
||||
@@ -55,7 +57,7 @@
|
||||
/// @return @c YES if parser supports parsing HTML files.
|
||||
+ (BOOL)isHTMLParser;
|
||||
/// Will be called after the parsing is finished. @return Reference to parsed object.
|
||||
- (id)xmlParserWillReturnDocument;
|
||||
- (nullable id)xmlParserWillReturnDocument;
|
||||
@end
|
||||
|
||||
|
||||
@@ -91,3 +93,4 @@
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
Reference in New Issue
Block a user