aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/rfc822
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-07-05 20:57:41 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-07-05 20:57:41 -0700
commit83aa26d94613a7220e55899e763e069715511d69 (patch)
tree7a45b172e845d46b2cfb9487b9a38216324c8fd8 /src/core/rfc822
parentf00e5f03199c2689c06eab9d2ae71a56f0ad53fb (diff)
Added simple rendering methods for RFC822 message at C++ API level
Diffstat (limited to 'src/core/rfc822')
-rw-r--r--src/core/rfc822/MCMessageBuilder.cc19
-rw-r--r--src/core/rfc822/MCMessageBuilder.h4
-rw-r--r--src/core/rfc822/MCMessageParser.cc30
-rw-r--r--src/core/rfc822/MCMessageParser.h4
4 files changed, 57 insertions, 0 deletions
diff --git a/src/core/rfc822/MCMessageBuilder.cc b/src/core/rfc822/MCMessageBuilder.cc
index ea449fd6..7f902be1 100644
--- a/src/core/rfc822/MCMessageBuilder.cc
+++ b/src/core/rfc822/MCMessageBuilder.cc
@@ -691,3 +691,22 @@ String * MessageBuilder::htmlRendering(HTMLRendererTemplateCallback * htmlCallba
MessageParser * message = MessageParser::messageParserWithData(data());
return message->htmlRendering(htmlCallback);
}
+
+String * MessageBuilder::htmlBodyRendering()
+{
+ MessageParser * message = MessageParser::messageParserWithData(data());
+ return message->htmlBodyRendering();
+}
+
+String * MessageBuilder::plainTextRendering()
+{
+ MessageParser * message = MessageParser::messageParserWithData(data());
+ return message->plainTextRendering();
+}
+
+String * MessageBuilder::plainTextBodyRendering()
+{
+ MessageParser * message = MessageParser::messageParserWithData(data());
+ return message->plainTextBodyRendering();
+}
+
diff --git a/src/core/rfc822/MCMessageBuilder.h b/src/core/rfc822/MCMessageBuilder.h
index 409cd9ee..efbb1f47 100644
--- a/src/core/rfc822/MCMessageBuilder.h
+++ b/src/core/rfc822/MCMessageBuilder.h
@@ -41,6 +41,10 @@ namespace mailcore {
virtual Data * data();
virtual String * htmlRendering(HTMLRendererTemplateCallback * htmlCallback = NULL);
+ virtual String * htmlBodyRendering();
+
+ virtual String * plainTextRendering();
+ virtual String * plainTextBodyRendering();
public: // subclass behavior
MessageBuilder(MessageBuilder * other);
diff --git a/src/core/rfc822/MCMessageParser.cc b/src/core/rfc822/MCMessageParser.cc
index b936fabf..1de28d6b 100644
--- a/src/core/rfc822/MCMessageParser.cc
+++ b/src/core/rfc822/MCMessageParser.cc
@@ -5,6 +5,7 @@
#include "MCAttachment.h"
#include "MCMessageHeader.h"
#include "MCHTMLRenderer.h"
+#include "HTMLBodyRendererTemplateCallback.h"
using namespace mailcore;
@@ -96,3 +97,32 @@ String * MessageParser::htmlRendering(HTMLRendererTemplateCallback * htmlCallbac
return HTMLRenderer::htmlForRFC822Message(this, htmlCallback);
}
+String * MessageParser::htmlBodyRendering()
+{
+ HTMLBodyRendererTemplateCallback * callback = new HTMLBodyRendererTemplateCallback();
+ String * result = htmlRendering(callback);
+ MC_SAFE_RELEASE(callback);
+ return result;
+}
+
+String * MessageParser::plainTextRendering()
+{
+ String * html = htmlRendering(NULL);
+ return html->flattenHTML();
+}
+
+String * MessageParser::plainTextBodyRendering()
+{
+ 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.
+ }
+ return plainTextBodyString;
+}
diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h
index 4f13299d..bed41793 100644
--- a/src/core/rfc822/MCMessageParser.h
+++ b/src/core/rfc822/MCMessageParser.h
@@ -24,6 +24,10 @@ namespace mailcore {
virtual Data * data();
virtual String * htmlRendering(HTMLRendererTemplateCallback * htmlCallback = NULL);
+ virtual String * htmlBodyRendering();
+
+ virtual String * plainTextRendering();
+ virtual String * plainTextBodyRendering();
public: // subclass behavior
MessageParser(MessageParser * other);