From 0a7d0ef76ec60ab8806d06976c0145f31c7a67ba Mon Sep 17 00:00:00 2001 From: "akkana%netscape.com" Date: Thu, 18 Nov 1999 19:39:47 +0000 Subject: [PATCH] Contribution from mozilla@bucksch.org to improve anchor and img tags in formatted mode (r=akkana). Also some minor improvements to handling of blank lines in pre tags, to get rid of extra blank lines in plaintext mail (r=mcafee). git-svn-id: svn://10.0.0.236/trunk@53891 18797224-902f-48f8-a5cc-f745e15eee43 --- .../htmlparser/src/nsHTMLToTXTSinkStream.cpp | 22 +++++++++++++------ .../htmlparser/src/nsHTMLToTXTSinkStream.cpp | 22 +++++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/mozilla/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/mozilla/htmlparser/src/nsHTMLToTXTSinkStream.cpp index 3c3a5c9b2dd..94aaca4242c 100644 --- a/mozilla/htmlparser/src/nsHTMLToTXTSinkStream.cpp +++ b/mozilla/htmlparser/src/nsHTMLToTXTSinkStream.cpp @@ -17,7 +17,11 @@ * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * - * Contributor(s): + * Contributor(s): + * Greg Kostello (original structure) + * Akkana Peck + * Daniel Brattell + * Ben Bucksch */ /** @@ -478,7 +482,9 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode) if (NS_SUCCEEDED(err)) { SetWrapColumn((PRUint32)col); +#ifdef DEBUG_akkana printf("Set wrap column to %d based on style\n", mWrapColumn); +#endif } } } else { @@ -558,23 +564,23 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode) } else if (type == eHTMLTag_pre) { - EnsureVerticalSpace(0); + EnsureVerticalSpace(1); } else if (type == eHTMLTag_a) { nsAutoString url; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "href", url))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "href", url)) + && !url.IsEmpty()) mURL = url; - else - mURL.Truncate(); } else if (type == eHTMLTag_img) { nsAutoString url; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "src", url))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "src", url)) && !url.IsEmpty()) { nsAutoString temp, desc; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "alt", desc))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "alt", desc)) + && !desc.IsEmpty()) { temp += " ("; temp += desc; @@ -633,6 +639,7 @@ nsHTMLToTXTSinkStream::CloseContainer(const nsIParserNode& aNode) EnsureVerticalSpace(0); } else if ((type == eHTMLTag_tr) || (type == eHTMLTag_li) || + (type == eHTMLTag_pre) || (type == eHTMLTag_blockquote)) { EnsureVerticalSpace(0); } else { @@ -694,6 +701,7 @@ nsHTMLToTXTSinkStream::CloseContainer(const nsIParserNode& aNode) temp += mURL; temp += ">"; Write(temp); + mURL.Truncate(); } } else if (type == eHTMLTag_sup) diff --git a/mozilla/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/mozilla/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp index 3c3a5c9b2dd..94aaca4242c 100644 --- a/mozilla/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp +++ b/mozilla/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp @@ -17,7 +17,11 @@ * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * - * Contributor(s): + * Contributor(s): + * Greg Kostello (original structure) + * Akkana Peck + * Daniel Brattell + * Ben Bucksch */ /** @@ -478,7 +482,9 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode) if (NS_SUCCEEDED(err)) { SetWrapColumn((PRUint32)col); +#ifdef DEBUG_akkana printf("Set wrap column to %d based on style\n", mWrapColumn); +#endif } } } else { @@ -558,23 +564,23 @@ nsHTMLToTXTSinkStream::OpenContainer(const nsIParserNode& aNode) } else if (type == eHTMLTag_pre) { - EnsureVerticalSpace(0); + EnsureVerticalSpace(1); } else if (type == eHTMLTag_a) { nsAutoString url; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "href", url))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "href", url)) + && !url.IsEmpty()) mURL = url; - else - mURL.Truncate(); } else if (type == eHTMLTag_img) { nsAutoString url; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "src", url))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "src", url)) && !url.IsEmpty()) { nsAutoString temp, desc; - if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "alt", desc))) + if (NS_SUCCEEDED(GetValueOfAttribute(aNode, "alt", desc)) + && !desc.IsEmpty()) { temp += " ("; temp += desc; @@ -633,6 +639,7 @@ nsHTMLToTXTSinkStream::CloseContainer(const nsIParserNode& aNode) EnsureVerticalSpace(0); } else if ((type == eHTMLTag_tr) || (type == eHTMLTag_li) || + (type == eHTMLTag_pre) || (type == eHTMLTag_blockquote)) { EnsureVerticalSpace(0); } else { @@ -694,6 +701,7 @@ nsHTMLToTXTSinkStream::CloseContainer(const nsIParserNode& aNode) temp += mURL; temp += ">"; Write(temp); + mURL.Truncate(); } } else if (type == eHTMLTag_sup)