aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ken Grigsby <grigsby@thursby.com>2013-04-19 17:29:04 -0500
committerGravatar Ken Grigsby <grigsby@thursby.com>2013-04-19 17:29:04 -0500
commit59caeaf0bdde0619d5b9f3e81a08971c2a0dbbfb (patch)
treed9b553d6e2a0bee00d77548bf5b6dcb121f5e3eb
parent11c1a0e319f3d360726f02c45d6724468b7917ed (diff)
Implemented Address::RFC822StringForAddresses and Address::nonEncodedRFC822StringForAddresses and ObjC counterparts
-rw-r--r--src/core/abstract/MCAddress.cc26
-rw-r--r--src/core/abstract/MCAddress.h3
-rw-r--r--src/core/renderer/MCAddressDisplay.cpp10
-rw-r--r--src/objc/abstract/MCOAddress.h15
-rw-r--r--src/objc/abstract/MCOAddress.mm14
-rw-r--r--tests/test-all.mm19
6 files changed, 75 insertions, 12 deletions
diff --git a/src/core/abstract/MCAddress.cc b/src/core/abstract/MCAddress.cc
index 4f6fc303..dce52cff 100644
--- a/src/core/abstract/MCAddress.cc
+++ b/src/core/abstract/MCAddress.cc
@@ -206,6 +206,32 @@ Array * Address::addressesWithNonEncodedRFC822String(String * string)
return result;
}
+String * Address::RFC822StringForAddresses(Array * addresses)
+{
+ String * result = String::string();
+ for(unsigned int i = 0 ; i < addresses->count() ; i ++) {
+ Address * address = (Address *) addresses->objectAtIndex(i);
+ if (i != 0) {
+ result->appendString(MCSTR(", "));
+ }
+ result->appendString(address->RFC822String());
+ }
+ return result;
+}
+
+String * Address::nonEncodedRFC822StringForAddresses(Array * addresses)
+{
+ String * result = String::string();
+ for(unsigned int i = 0 ; i < addresses->count() ; i ++) {
+ Address * address = (Address *) addresses->objectAtIndex(i);
+ if (i != 0) {
+ result->appendString(MCSTR(", "));
+ }
+ result->appendString(address->nonEncodedRFC822String());
+ }
+ return result;
+}
+
String * Address::description()
{
String * result = String::string();
diff --git a/src/core/abstract/MCAddress.h b/src/core/abstract/MCAddress.h
index 4c132ed3..ad8a36f6 100644
--- a/src/core/abstract/MCAddress.h
+++ b/src/core/abstract/MCAddress.h
@@ -21,6 +21,9 @@ namespace mailcore {
static Array * addressesWithRFC822String(String * string);
static Array * addressesWithNonEncodedRFC822String(String * string);
+ static String * RFC822StringForAddresses(Array * addresses);
+ static String * nonEncodedRFC822StringForAddresses(Array * addresses);
+
virtual void setDisplayName(String * displayName);
virtual String * displayName();
diff --git a/src/core/renderer/MCAddressDisplay.cpp b/src/core/renderer/MCAddressDisplay.cpp
index 842dd0df..4a0fe44b 100644
--- a/src/core/renderer/MCAddressDisplay.cpp
+++ b/src/core/renderer/MCAddressDisplay.cpp
@@ -56,15 +56,7 @@ String * AddressDisplay::veryShortDisplayStringForAddress(Address * address)
String * AddressDisplay::displayStringForAddresses(Array * addresses)
{
- String * result = String::string();
- for(unsigned int i = 0 ; i < addresses->count() ; i ++) {
- Address * address = (Address *) addresses->objectAtIndex(i);
- if (i != 0) {
- result->appendString(MCSTR(", "));
- }
- result->appendString(displayStringForAddress(address));
- }
- return result;
+ return Address::nonEncodedRFC822StringForAddresses(addresses);
}
String * AddressDisplay::shortDisplayStringForAddresses(Array * addresses)
diff --git a/src/objc/abstract/MCOAddress.h b/src/objc/abstract/MCOAddress.h
index 33f2c545..4680edd6 100644
--- a/src/objc/abstract/MCOAddress.h
+++ b/src/objc/abstract/MCOAddress.h
@@ -61,4 +61,19 @@
@end
+@interface NSArray (MCONSArray)
+
+// The receiver is an NSArray of MCOAddress.
+// Returns an NSArray of NSString objects separated by commas that contain the
+// RFC822 encoding of the addresses.
+// For example: @[ @"DINH Vi=C3=AAt Ho=C3=A0 <hoa@etpan.org>" ]
+- (NSString *) RFC822String;
+
+// Returns an NSArray of NSString objects separated by commas that contain the
+// non-MIME-encoded RFC822 form of the addresses.
+// For example: @[ "DINH Viêt Hoà <hoa@etpan.org>" ]
+- (NSString *) nonEncodedRFC822String;
+
+@end
+
#endif
diff --git a/src/objc/abstract/MCOAddress.mm b/src/objc/abstract/MCOAddress.mm
index 6676e1a2..a6fbb728 100644
--- a/src/objc/abstract/MCOAddress.mm
+++ b/src/objc/abstract/MCOAddress.mm
@@ -149,3 +149,17 @@ MCO_OBJC_SYNTHESIZE_STRING(setMailbox, mailbox)
}
@end
+
+@implementation NSArray (MCONSArray)
+
+- (NSString *) RFC822String
+{
+ return [NSString mco_stringWithMCString:mailcore::Address::RFC822StringForAddresses([self mco_mcArray])];
+}
+
+- (NSString *) nonEncodedRFC822String
+{
+ return [NSString mco_stringWithMCString:mailcore::Address::nonEncodedRFC822StringForAddresses([self mco_mcArray ])];
+}
+
+@end
diff --git a/tests/test-all.mm b/tests/test-all.mm
index 97de53fd..6107730e 100644
--- a/tests/test-all.mm
+++ b/tests/test-all.mm
@@ -272,6 +272,19 @@ static void testAsyncPOP()
[[NSRunLoop currentRunLoop] run];
}
+static void testAddresses()
+{
+ mailcore::Address *addr = mailcore::Address::addressWithNonEncodedRFC822String(MCSTR("DINH Viêt Hoà <hoa@etpan.org>"));
+ MCLog("%s %s", MCUTF8DESC(addr->nonEncodedRFC822String()), MCUTF8DESC(addr->RFC822String()));
+
+ mailcore::Array *addresses = mailcore::Address::addressesWithNonEncodedRFC822String(MCSTR("My Email1 <email1@gmail.com>, DINH Viêt Hoà <hoa@etpan.org>,\"Email3, My\" <my.email@gmail.com>"));
+ MCLog("%s", MCUTF8DESC(addresses));
+ mailcore::String *str = mailcore::Address::nonEncodedRFC822StringForAddresses(addresses);
+ MCLog("%s", MCUTF8DESC(str));
+ str = mailcore::Address::RFC822StringForAddresses(addresses);
+ MCLog("%s", MCUTF8DESC(str));
+}
+
void testObjC()
{
MCOIMAPSession *session = [[MCOIMAPSession alloc] init];
@@ -317,7 +330,7 @@ void testAll()
displayName = MCSTR("My Email");
mailcore::AutoreleasePool * pool = new mailcore::AutoreleasePool();
-
+ mailcore::logEnabled = true;
mailstream_debug = 1;
//mailcore::Data * data = testMessageBuilder();
@@ -328,8 +341,8 @@ void testAll()
//testAsyncSMTP(data);
//testAsyncIMAP();
//testAsyncPOP();
-
- testObjC();
+ testAddresses();
+ //testObjC();
MCLog("pool release");
pool->release();