// From /widget/HTMLConverter // // Takes HTML and converts it to plain text but in unicode. // NS_IMETHODIMP nsScriptableUnescapeHTML::Unescape(const nsAString & aFromStr, nsAString & aToStr) { // create the parser to do the conversion. aToStr.SetLength(0); nsresult rv; nsCOMPtr<nsIParser> parser = do_CreateInstance(kCParserCID, &rv); if (NS_FAILED(rv)) return rv; // convert it! nsCOMPtr<nsIContentSink> sink; sink = do_CreateInstance(NS_PLAINTEXTSINK_CONTRACTID); NS_ENSURE_TRUE(sink, NS_ERROR_FAILURE); nsCOMPtr<nsIHTMLToTextSink> textSink(do_QueryInterface(sink)); NS_ENSURE_TRUE(textSink, NS_ERROR_FAILURE); textSink->Initialize(&aToStr, nsIDocumentEncoder::OutputSelectionOnly | nsIDocumentEncoder::OutputAbsoluteLinks, 0); parser->SetContentSink(sink); parser->Parse(aFromStr, 0, NS_LITERAL_CSTRING("text/html"), PR_TRUE, eDTDMode_fragment); return NS_OK; }
// // ConvertFromHTMLToUnicode // // Takes HTML and converts it to plain text but in unicode. // NS_IMETHODIMP nsHTMLFormatConverter::ConvertFromHTMLToUnicode(const nsAutoString & aFromStr, nsAutoString & aToStr) { // create the parser to do the conversion. aToStr.SetLength(0); nsresult rv; nsCOMPtr<nsIParser> parser = do_CreateInstance(kCParserCID, &rv); if ( !parser ) return rv; // convert it! nsCOMPtr<nsIContentSink> sink; sink = do_CreateInstance(NS_PLAINTEXTSINK_CONTRACTID); NS_ENSURE_TRUE(sink, NS_ERROR_FAILURE); nsCOMPtr<nsIHTMLToTextSink> textSink(do_QueryInterface(sink)); NS_ENSURE_TRUE(textSink, NS_ERROR_FAILURE); // We set OutputNoScriptContent and OutputNoFramesContent unconditionally // here because |aFromStr| is already filtered based on user preferences. PRUint32 flags = nsIDocumentEncoder::OutputSelectionOnly | nsIDocumentEncoder::OutputAbsoluteLinks | nsIDocumentEncoder::OutputNoScriptContent | nsIDocumentEncoder::OutputNoFramesContent; textSink->Initialize(&aToStr, flags, 0); parser->SetContentSink(sink); parser->Parse(aFromStr, 0, NS_LITERAL_CSTRING("text/html"), PR_TRUE, eDTDMode_fragment); return NS_OK; } // ConvertFromHTMLToUnicode
void ConvertBufToPlainText(nsString &aConBuf, int aFlag) { nsCOMPtr<nsIParser> parser = do_CreateInstance(kCParserCID); if (parser) { nsCOMPtr<nsIContentSink> sink; sink = do_CreateInstance(NS_PLAINTEXTSINK_CONTRACTID); if (sink) { nsCOMPtr<nsIHTMLToTextSink> textSink(do_QueryInterface(sink)); if (textSink) { nsAutoString convertedText; textSink->Initialize(&convertedText, aFlag, 72); parser->SetContentSink(sink); parser->Parse(aConBuf, 0, NS_LITERAL_CSTRING("text/html"), PR_TRUE); aConBuf = convertedText; } } } }