aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.cc7
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncConnection.h2
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.cc5
-rwxr-xr-xsrc/async/imap/MCIMAPAsyncSession.h2
-rw-r--r--src/async/imap/MCIMAPMessageRenderingOperation.cc5
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cc20
-rwxr-xr-xsrc/core/imap/MCIMAPSession.h4
-rw-r--r--src/core/rfc822/MCMessageBuilder.cc4
-rw-r--r--src/core/rfc822/MCMessageBuilder.h2
-rw-r--r--src/core/rfc822/MCMessageParser.cc18
-rw-r--r--src/core/rfc822/MCMessageParser.h2
-rwxr-xr-xsrc/objc/imap/MCOIMAPSession.h21
-rwxr-xr-xsrc/objc/imap/MCOIMAPSession.mm9
-rw-r--r--src/objc/rfc822/MCOMessageBuilder.h4
-rw-r--r--src/objc/rfc822/MCOMessageBuilder.mm8
-rw-r--r--src/objc/rfc822/MCOMessageParser.h4
-rw-r--r--src/objc/rfc822/MCOMessageParser.mm7
-rw-r--r--tests/test-all.mm3
18 files changed, 90 insertions, 37 deletions
diff --git a/src/async/imap/MCIMAPAsyncConnection.cc b/src/async/imap/MCIMAPAsyncConnection.cc
index 53dc84d4..4909310f 100755
--- a/src/async/imap/MCIMAPAsyncConnection.cc
+++ b/src/async/imap/MCIMAPAsyncConnection.cc
@@ -667,9 +667,12 @@ IMAPMessageRenderingOperation * IMAPAsyncConnection::plainTextRenderingOperation
}
IMAPMessageRenderingOperation * IMAPAsyncConnection::plainTextBodyRenderingOperation(IMAPMessage * message,
- String * folder)
+ String * folder,
+ bool stripWhitespace)
{
- return renderingOperation(message, folder, IMAPMessageRenderingTypePlainTextBody);
+ return renderingOperation(message, folder,
+ stripWhitespace ? IMAPMessageRenderingTypePlainTextBodyAndStripWhitespace :
+ IMAPMessageRenderingTypePlainTextBody);
}
void IMAPAsyncConnection::setAutomaticConfigurationEnabled(bool enabled)
diff --git a/src/async/imap/MCIMAPAsyncConnection.h b/src/async/imap/MCIMAPAsyncConnection.h
index 49fa5e1a..b975ed69 100755
--- a/src/async/imap/MCIMAPAsyncConnection.h
+++ b/src/async/imap/MCIMAPAsyncConnection.h
@@ -135,7 +135,7 @@ namespace mailcore {
virtual IMAPMessageRenderingOperation * htmlRenderingOperation(IMAPMessage * message, String * folder);
virtual IMAPMessageRenderingOperation * htmlBodyRenderingOperation(IMAPMessage * message, String * folder);
virtual IMAPMessageRenderingOperation * plainTextRenderingOperation(IMAPMessage * message, String * folder);
- virtual IMAPMessageRenderingOperation * plainTextBodyRenderingOperation(IMAPMessage * message, String * folder);
+ virtual IMAPMessageRenderingOperation * plainTextBodyRenderingOperation(IMAPMessage * message, String * folder, bool stripWhitespace);
private:
diff --git a/src/async/imap/MCIMAPAsyncSession.cc b/src/async/imap/MCIMAPAsyncSession.cc
index b69fa309..573e7e42 100755
--- a/src/async/imap/MCIMAPAsyncSession.cc
+++ b/src/async/imap/MCIMAPAsyncSession.cc
@@ -526,10 +526,11 @@ IMAPMessageRenderingOperation * IMAPAsyncSession::plainTextRenderingOperation(IM
}
IMAPMessageRenderingOperation * IMAPAsyncSession::plainTextBodyRenderingOperation(IMAPMessage * message,
- String * folder)
+ String * folder,
+ bool stripWhitespace)
{
IMAPAsyncConnection * session = sessionForFolder(folder);
- return session->plainTextBodyRenderingOperation(message, folder);
+ return session->plainTextBodyRenderingOperation(message, folder, stripWhitespace);
}
void IMAPAsyncSession::automaticConfigurationDone(IMAPSession * session)
diff --git a/src/async/imap/MCIMAPAsyncSession.h b/src/async/imap/MCIMAPAsyncSession.h
index 54ffca21..fa29131a 100755
--- a/src/async/imap/MCIMAPAsyncSession.h
+++ b/src/async/imap/MCIMAPAsyncSession.h
@@ -150,7 +150,7 @@ namespace mailcore {
virtual IMAPMessageRenderingOperation * htmlRenderingOperation(IMAPMessage * message, String * folder);
virtual IMAPMessageRenderingOperation * htmlBodyRenderingOperation(IMAPMessage * message, String * folder);
virtual IMAPMessageRenderingOperation * plainTextRenderingOperation(IMAPMessage * message, String * folder);
- virtual IMAPMessageRenderingOperation * plainTextBodyRenderingOperation(IMAPMessage * message, String * folder);
+ virtual IMAPMessageRenderingOperation * plainTextBodyRenderingOperation(IMAPMessage * message, String * folder, bool stripWhitespace);
public: // private
virtual void automaticConfigurationDone(IMAPSession * session);
diff --git a/src/async/imap/MCIMAPMessageRenderingOperation.cc b/src/async/imap/MCIMAPMessageRenderingOperation.cc
index e054aa3f..e30bcd67 100644
--- a/src/async/imap/MCIMAPMessageRenderingOperation.cc
+++ b/src/async/imap/MCIMAPMessageRenderingOperation.cc
@@ -65,7 +65,10 @@ void IMAPMessageRenderingOperation::main()
mResult = session()->session()->plainTextRendering(mMessage, folder(), &error);
}
else if (mRenderingType == IMAPMessageRenderingTypePlainTextBody) {
- mResult = session()->session()->plainTextBodyRendering(mMessage, folder(), &error);
+ mResult = session()->session()->plainTextBodyRendering(mMessage, folder(), false, &error);
+ }
+ else if (mRenderingType == IMAPMessageRenderingTypePlainTextBodyAndStripWhitespace) {
+ mResult = session()->session()->plainTextBodyRendering(mMessage, folder(), true, &error);
}
MC_SAFE_RETAIN(mResult);
diff --git a/src/core/imap/MCIMAPSession.cc b/src/core/imap/MCIMAPSession.cc
index 95662f3b..6c553e65 100755
--- a/src/core/imap/MCIMAPSession.cc
+++ b/src/core/imap/MCIMAPSession.cc
@@ -3417,7 +3417,7 @@ String * IMAPSession::plainTextRendering(IMAPMessage * message, String * folder,
return plainTextString;
}
-String * IMAPSession::plainTextBodyRendering(IMAPMessage * message, String * folder, ErrorCode * pError)
+String * IMAPSession::plainTextBodyRendering(IMAPMessage * message, String * folder, bool stripWhitespace, ErrorCode * pError)
{
String * htmlBodyString = htmlBodyRendering(message, folder, pError);
@@ -3427,14 +3427,16 @@ String * IMAPSession::plainTextBodyRendering(IMAPMessage * message, String * fol
String * plainTextBodyString = htmlBodyString->flattenHTML();
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" "));
-
- while (plainTextBodyString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" ")) > 0) {
- /* do nothing */
+ if (stripWhitespace) {
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" "));
+
+ while (plainTextBodyString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" ")) > 0) {
+ /* do nothing */
+ }
}
return plainTextBodyString;
diff --git a/src/core/imap/MCIMAPSession.h b/src/core/imap/MCIMAPSession.h
index 3c819616..a8a7279b 100755
--- a/src/core/imap/MCIMAPSession.h
+++ b/src/core/imap/MCIMAPSession.h
@@ -175,9 +175,9 @@ namespace mailcore {
/** Text rendering of the message.*/
virtual String * plainTextRendering(IMAPMessage * message, String * folder, ErrorCode * pError);
- /** Text rendering of the body of the message. All end of line will be removed and white spaces cleaned up.
+ /** Text rendering of the body of the message. All end of line will be removed and white spaces cleaned up if requested.
This method can be used to generate the summary of the message.*/
- virtual String * plainTextBodyRendering(IMAPMessage * message, String * folder, ErrorCode * pError);
+ virtual String * plainTextBodyRendering(IMAPMessage * message, String * folder, bool stripWhitespace, ErrorCode * pError);
/** Enable automatic query of the capabilities of the IMAP server when set to true. */
virtual void setAutomaticConfigurationEnabled(bool enabled);
diff --git a/src/core/rfc822/MCMessageBuilder.cc b/src/core/rfc822/MCMessageBuilder.cc
index 262e1180..ecec743c 100644
--- a/src/core/rfc822/MCMessageBuilder.cc
+++ b/src/core/rfc822/MCMessageBuilder.cc
@@ -721,9 +721,9 @@ String * MessageBuilder::plainTextRendering()
return message->plainTextRendering();
}
-String * MessageBuilder::plainTextBodyRendering()
+String * MessageBuilder::plainTextBodyRendering(bool stripWhitespace)
{
MessageParser * message = MessageParser::messageParserWithData(data());
- return message->plainTextBodyRendering();
+ return message->plainTextBodyRendering(stripWhitespace);
}
diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h
index efbb1f47..6981e295 100644
--- a/src/core/rfc822/MCMessageBuilder.h
+++ b/src/core/rfc822/MCMessageBuilder.h
@@ -44,7 +44,7 @@ namespace mailcore {
virtual String * htmlBodyRendering();
virtual String * plainTextRendering();
- virtual String * plainTextBodyRendering();
+ virtual String * plainTextBodyRendering(bool stripWhitespace);
public: // subclass behavior
MessageBuilder(MessageBuilder * other);
diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc
index 725f3529..0366d597 100644
--- a/src/core/rfc822/MCMessageParser.cc
+++ b/src/core/rfc822/MCMessageParser.cc
@@ -118,18 +118,20 @@ String * MessageParser::plainTextRendering()
return html->flattenHTML();
}
-String * MessageParser::plainTextBodyRendering()
+String * MessageParser::plainTextBodyRendering(bool stripWhitespace)
{
String * html = htmlBodyRendering();
String * plainTextBodyString = html->flattenHTML();
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" "));
- plainTextBodyString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" "));
- while (plainTextBodyString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" "))) {
- // do nothing.
+ if (stripWhitespace) {
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\t"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\n"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\v"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\f"), MCSTR(" "));
+ plainTextBodyString->replaceOccurrencesOfString(MCSTR("\r"), MCSTR(" "));
+ while (plainTextBodyString->replaceOccurrencesOfString(MCSTR(" "), MCSTR(" "))) {
+ // do nothing.
+ }
}
return plainTextBodyString;
}
diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h
index bed41793..7243730b 100644
--- a/src/core/rfc822/MCMessageParser.h
+++ b/src/core/rfc822/MCMessageParser.h
@@ -27,7 +27,7 @@ namespace mailcore {
virtual String * htmlBodyRendering();
virtual String * plainTextRendering();
- virtual String * plainTextBodyRendering();
+ virtual String * plainTextBodyRendering(bool stripWhitespace);
public: // subclass behavior
MessageParser(MessageParser * other);
diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h
index 905beb9e..66e679c7 100755
--- a/src/objc/imap/MCOIMAPSession.h
+++ b/src/objc/imap/MCOIMAPSession.h
@@ -611,17 +611,34 @@
/**
Returns an operation to render the plain text body of a message.
- All end of line will be removed and white spaces cleaned up.
+ All end of line will be removed and white spaces cleaned up if requested.
This method can be used to generate the summary of the message.
MCOIMAPMessageRenderingOperation * op = [session plainTextBodyRenderingOperationWithMessage:msg
- folder:@"INBOX"];
+ folder:@"INBOX"
+ stripWhitespace:YES];
[op start:^(NSString * htmlString, NSError * error) {
...
}];
*/
- (MCOIMAPMessageRenderingOperation *) plainTextBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message
+ folder:(NSString *)folder
+ stripWhitespace:(BOOL)stripWhitespace;
+
+/**
+ Returns an operation to render the plain text body of a message.
+ All end of line will be removed and white spaces cleaned up.
+ This method can be used to generate the summary of the message.
+
+ MCOIMAPMessageRenderingOperation * op = [session plainTextBodyRenderingOperationWithMessage:msg
+ folder:@"INBOX"];
+
+ [op start:^(NSString * htmlString, NSError * error) {
+ ...
+ }];
+ */
+- (MCOIMAPMessageRenderingOperation *) plainTextBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message
folder:(NSString *)folder;
/**
diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm
index dd971cc3..a53456ae 100755
--- a/src/objc/imap/MCOIMAPSession.mm
+++ b/src/objc/imap/MCOIMAPSession.mm
@@ -449,7 +449,14 @@ MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setMaximumConnections, ma
- (MCOIMAPMessageRenderingOperation *) plainTextBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message
folder:(NSString *)folder
{
- IMAPMessageRenderingOperation * coreOp = MCO_NATIVE_INSTANCE->plainTextBodyRenderingOperation(MCO_FROM_OBJC(IMAPMessage, message), [folder mco_mcString]);
+ return [self plainTextBodyRenderingOperationWithMessage:message folder:folder stripWhitespace:YES];
+}
+
+- (MCOIMAPMessageRenderingOperation *) plainTextBodyRenderingOperationWithMessage:(MCOIMAPMessage *)message
+ folder:(NSString *)folder
+ stripWhitespace:(BOOL)stripWhitespace
+{
+ IMAPMessageRenderingOperation * coreOp = MCO_NATIVE_INSTANCE->plainTextBodyRenderingOperation(MCO_FROM_OBJC(IMAPMessage, message), [folder mco_mcString], stripWhitespace);
return MCO_TO_OBJC_OP(coreOp);
}
diff --git a/src/objc/rfc822/MCOMessageBuilder.h b/src/objc/rfc822/MCOMessageBuilder.h
index 5ba199a4..0ecd2dea 100644
--- a/src/objc/rfc822/MCOMessageBuilder.h
+++ b/src/objc/rfc822/MCOMessageBuilder.h
@@ -71,6 +71,10 @@
This method can be used to generate the summary of the message.*/
- (NSString *) plainTextBodyRendering;
+/** Text rendering of the body of the message. All end of line will be removed and white spaces cleaned up if requested.
+ This method can be used to generate the summary of the message.*/
+- (NSString *) plainTextBodyRenderingAndStripWhitespace:(BOOL)stripWhitespace;
+
@end
#endif
diff --git a/src/objc/rfc822/MCOMessageBuilder.mm b/src/objc/rfc822/MCOMessageBuilder.mm
index dfcf6028..c884386f 100644
--- a/src/objc/rfc822/MCOMessageBuilder.mm
+++ b/src/objc/rfc822/MCOMessageBuilder.mm
@@ -75,7 +75,6 @@ MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix)
return result;
}
-
- (NSString *) htmlBodyRendering
{
return MCO_OBJC_BRIDGE_GET(htmlBodyRendering);
@@ -88,7 +87,12 @@ MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix)
- (NSString *) plainTextBodyRendering
{
- return MCO_OBJC_BRIDGE_GET(plainTextBodyRendering);
+ return [self plainTextBodyRenderingAndStripWhitespace:YES];
+}
+
+- (NSString *) plainTextBodyRenderingAndStripWhitespace:(BOOL)stripWhitespace
+{
+ return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->plainTextBodyRendering(stripWhitespace));
}
@end
diff --git a/src/objc/rfc822/MCOMessageParser.h b/src/objc/rfc822/MCOMessageParser.h
index 5a009bb7..8a0247be 100644
--- a/src/objc/rfc822/MCOMessageParser.h
+++ b/src/objc/rfc822/MCOMessageParser.h
@@ -48,6 +48,10 @@
This method can be used to generate the summary of the message.*/
- (NSString *) plainTextBodyRendering;
+/** Text rendering of the body of the message. All end of line will be removed and white spaces cleaned up if requested.
+ This method can be used to generate the summary of the message.*/
+- (NSString *) plainTextBodyRenderingAndStripWhitespace:(BOOL)stripWhitespace;
+
@end
#endif
diff --git a/src/objc/rfc822/MCOMessageParser.mm b/src/objc/rfc822/MCOMessageParser.mm
index 8e3f1261..78b84c78 100644
--- a/src/objc/rfc822/MCOMessageParser.mm
+++ b/src/objc/rfc822/MCOMessageParser.mm
@@ -81,7 +81,12 @@
- (NSString *) plainTextBodyRendering
{
- return MCO_OBJC_BRIDGE_GET(plainTextBodyRendering);
+ return [self plainTextBodyRenderingAndStripWhitespace:YES];
+}
+
+- (NSString *) plainTextBodyRenderingAndStripWhitespace:(BOOL)stripWhitespace
+{
+ return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->plainTextBodyRendering(stripWhitespace));
}
@end
diff --git a/tests/test-all.mm b/tests/test-all.mm
index 2d6fe30b..4c81a697 100644
--- a/tests/test-all.mm
+++ b/tests/test-all.mm
@@ -83,7 +83,8 @@ static void testMessageParser(mailcore::Data * data)
MCLog("%s", MCUTF8DESC(parser));
MCLog("HTML rendering");
MCLog("%s", MCUTF8(parser->htmlRendering()));
- MCLog("%s", MCUTF8(parser->plainTextBodyRendering()));
+ MCLog("%s", MCUTF8(parser->plainTextBodyRendering(true)));
+ MCLog("%s", MCUTF8(parser->plainTextBodyRendering(false)));
}
static void testIMAP()