summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cydia/MIMEAddress.h60
-rw-r--r--Cydia/MIMEAddress.mm96
-rw-r--r--Menes/ObjectHandle.h5
-rw-r--r--MobileCydia.mm85
4 files changed, 170 insertions, 76 deletions
diff --git a/Cydia/MIMEAddress.h b/Cydia/MIMEAddress.h
new file mode 100644
index 0000000..200641c
--- /dev/null
+++ b/Cydia/MIMEAddress.h
@@ -0,0 +1,60 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2011 Jay Freeman (saurik)
+*/
+
+/* Modified BSD License {{{ */
+/*
+ * Redistribution and use in source and binary
+ * forms, with or without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the
+ * above copyright notice, this list of conditions
+ * and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation
+ * and/or other materials provided with the
+ * distribution.
+ * 3. The name of the author may not be used to endorse
+ * or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/* }}} */
+
+#ifndef Cydia_MIMEAddress_H
+#define Cydia_MIMEAddress_H
+
+#include "Menes/ObjectHandle.h"
+
+@interface MIMEAddress : NSObject {
+ _H<NSString> name_;
+ _H<NSString> address_;
+}
+
+- (NSString *) name;
+- (NSString *) address;
+
+- (void) setAddress:(NSString *)address;
+
++ (MIMEAddress *) addressWithString:(NSString *)string;
+- (id) initWithString:(NSString *)string;
+
+@end
+
+#endif//Cydia_MIMEAddress_H
diff --git a/Cydia/MIMEAddress.mm b/Cydia/MIMEAddress.mm
new file mode 100644
index 0000000..cec9c8b
--- /dev/null
+++ b/Cydia/MIMEAddress.mm
@@ -0,0 +1,96 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2011 Jay Freeman (saurik)
+*/
+
+/* Modified BSD License {{{ */
+/*
+ * Redistribution and use in source and binary
+ * forms, with or without modification, are permitted
+ * provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the
+ * above copyright notice, this list of conditions
+ * and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the
+ * above copyright notice, this list of conditions
+ * and the following disclaimer in the documentation
+ * and/or other materials provided with the
+ * distribution.
+ * 3. The name of the author may not be used to endorse
+ * or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
+ * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/* }}} */
+
+#include "Cydia/MIMEAddress.h"
+
+#include <WebKit/WebScriptObject.h>
+
+#include "CyteKit/PerlCompatibleRegEx.hpp"
+
+@implementation MIMEAddress
+
+- (NSString *) name {
+ return name_;
+}
+
+- (NSString *) address {
+ return address_;
+}
+
+- (void) setAddress:(NSString *)address {
+ address_ = address;
+}
+
++ (MIMEAddress *) addressWithString:(NSString *)string {
+ return [[[MIMEAddress alloc] initWithString:string] autorelease];
+}
+
++ (NSArray *) _attributeKeys {
+ return [NSArray arrayWithObjects:
+ @"address",
+ @"name",
+ nil];
+}
+
+- (NSArray *) attributeKeys {
+ return [[self class] _attributeKeys];
+}
+
++ (BOOL) isKeyExcludedFromWebScript:(const char *)name {
+ return ![[self _attributeKeys] containsObject:[NSString stringWithUTF8String:name]] && [super isKeyExcludedFromWebScript:name];
+}
+
+- (id) initWithString:(NSString *)string {
+ if ((self = [super init]) != nil) {
+ const char *data = [string UTF8String];
+ size_t size = [string length];
+
+ static Pcre address_r("^\"?(.*)\"? <([^>]*)>$");
+
+ if (address_r(data, size)) {
+ name_ = address_r[1];
+ address_ = address_r[2];
+ } else {
+ name_ = string;
+ address_ = nil;
+ }
+ } return self;
+}
+
+@end
diff --git a/Menes/ObjectHandle.h b/Menes/ObjectHandle.h
index cd01509..188ec1a 100644
--- a/Menes/ObjectHandle.h
+++ b/Menes/ObjectHandle.h
@@ -40,6 +40,11 @@
#ifndef Menes_ObjectHandle_H
#define Menes_ObjectHandle_H
+#include "CyteKit/UCPlatform.h"
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <Foundation/Foundation.h>
+
template <typename Type_, unsigned Delegate_>
struct MenesObjectHandle_;
diff --git a/MobileCydia.mm b/MobileCydia.mm
index 9d7881a..7a99e2f 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -129,6 +129,7 @@ extern "C" {
#include "CyteKit/WebViewController.h"
#include "CyteKit/stringWithUTF8Bytes.h"
+#include "Cydia/MIMEAddress.h"
#include "Cydia/ProgressEvent.h"
#include "SDURLCache/SDURLCache.h"
@@ -588,74 +589,6 @@ struct NSStringMapEqual :
};
/* }}} */
-/* Mime Addresses {{{ */
-@interface Address : NSObject {
- _H<NSString> name_;
- _H<NSString> address_;
-}
-
-- (NSString *) name;
-- (NSString *) address;
-
-- (void) setAddress:(NSString *)address;
-
-+ (Address *) addressWithString:(NSString *)string;
-- (Address *) initWithString:(NSString *)string;
-
-@end
-
-@implementation Address
-
-- (NSString *) name {
- return name_;
-}
-
-- (NSString *) address {
- return address_;
-}
-
-- (void) setAddress:(NSString *)address {
- address_ = address;
-}
-
-+ (Address *) addressWithString:(NSString *)string {
- return [[[Address alloc] initWithString:string] autorelease];
-}
-
-+ (NSArray *) _attributeKeys {
- return [NSArray arrayWithObjects:
- @"address",
- @"name",
- nil];
-}
-
-- (NSArray *) attributeKeys {
- return [[self class] _attributeKeys];
-}
-
-+ (BOOL) isKeyExcludedFromWebScript:(const char *)name {
- return ![[self _attributeKeys] containsObject:[NSString stringWithUTF8String:name]] && [super isKeyExcludedFromWebScript:name];
-}
-
-- (Address *) initWithString:(NSString *)string {
- if ((self = [super init]) != nil) {
- const char *data = [string UTF8String];
- size_t size = [string length];
-
- static Pcre address_r("^\"?(.*)\"? <([^>]*)>$");
-
- if (address_r(data, size)) {
- name_ = address_r[1];
- address_ = address_r[2];
- } else {
- name_ = string;
- address_ = nil;
- }
- } return self;
-}
-
-@end
-/* }}} */
/* CoreGraphics Primitives {{{ */
class CYColor {
private:
@@ -1776,7 +1709,7 @@ struct ParsedPackage {
- (NSString *) uri;
-- (Address *) maintainer;
+- (MIMEAddress *) maintainer;
- (size_t) size;
- (NSString *) longDescription;
- (NSString *) shortDescription;
@@ -1812,7 +1745,7 @@ struct ParsedPackage {
- (UIImage *) icon;
- (NSString *) homepage;
- (NSString *) depiction;
-- (Address *) author;
+- (MIMEAddress *) author;
- (NSString *) support;
@@ -2318,14 +2251,14 @@ struct PackageNameOrdering :
#endif
}
-- (Address *) maintainer {
+- (MIMEAddress *) maintainer {
@synchronized (database_) {
if ([database_ era] != era_ || file_.end())
return nil;
pkgRecords::Parser *parser = &[database_ records]->Lookup(file_);
const std::string &maintainer(parser->Maintainer());
- return maintainer.empty() ? nil : [Address addressWithString:[NSString stringWithUTF8String:maintainer.c_str()]];
+ return maintainer.empty() ? nil : [MIMEAddress addressWithString:[NSString stringWithUTF8String:maintainer.c_str()]];
} }
- (size_t) size {
@@ -2553,12 +2486,12 @@ struct PackageNameOrdering :
return parsed_ != NULL && !parsed_->depiction_.empty() ? parsed_->depiction_ : [[self source] depictionForPackage:id_];
}
-- (Address *) sponsor {
- return parsed_ == NULL || parsed_->sponsor_.empty() ? nil : [Address addressWithString:parsed_->sponsor_];
+- (MIMEAddress *) sponsor {
+ return parsed_ == NULL || parsed_->sponsor_.empty() ? nil : [MIMEAddress addressWithString:parsed_->sponsor_];
}
-- (Address *) author {
- return parsed_ == NULL || parsed_->author_.empty() ? nil : [Address addressWithString:parsed_->author_];
+- (MIMEAddress *) author {
+ return parsed_ == NULL || parsed_->author_.empty() ? nil : [MIMEAddress addressWithString:parsed_->author_];
}
- (NSString *) support {