diff --git a/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/htmlparser/src/nsHTMLToTXTSinkStream.cpp
index 3c3a5c9b2dd6..94aaca4242ce 100644
--- a/htmlparser/src/nsHTMLToTXTSinkStream.cpp
+++ b/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/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp
index 3c3a5c9b2dd6..94aaca4242ce 100644
--- a/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp
+++ b/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)