diff options
Diffstat (limited to 'Cydia')
-rw-r--r-- | Cydia/MIMEAddress.h | 60 | ||||
-rw-r--r-- | Cydia/MIMEAddress.mm | 96 |
2 files changed, 156 insertions, 0 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 |