summaryrefslogtreecommitdiff
path: root/Cydia/MIMEAddress.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2011-03-07 08:44:41 -0800
committerJay Freeman (saurik) <saurik@saurik.com>2011-03-08 01:50:04 -0800
commit7aa82ca2d079e16eacad05edc88848c959f46a35 (patch)
tree993c22f4f6413d6ec199d3087d5d92b17f4d0f85 /Cydia/MIMEAddress.mm
parent380fa10c2c207ff7d0d8941f250799f6c7632975 (diff)
Separate out Cydia/MIMEAddress.*.
Diffstat (limited to 'Cydia/MIMEAddress.mm')
-rw-r--r--Cydia/MIMEAddress.mm96
1 files changed, 96 insertions, 0 deletions
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