diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-07-05 20:57:41 -0700 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-07-05 20:57:41 -0700 |
commit | 83aa26d94613a7220e55899e763e069715511d69 (patch) | |
tree | 7a45b172e845d46b2cfb9487b9a38216324c8fd8 /src/core/rfc822 | |
parent | f00e5f03199c2689c06eab9d2ae71a56f0ad53fb (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.cc | 19 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageBuilder.h | 4 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageParser.cc | 30 | ||||
-rw-r--r-- | src/core/rfc822/MCMessageParser.h | 4 |
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); |