"); + } + else if(node->tag == tag_pre) + PrintSgmlTagString(fout, mode, indent, sgmltag_type, + ""); + else if(sgmltag_type == SgmlTagEnd) + PPrintString(fout, indent, "
stuff */
+ {
+ PPrintString(fout, indent, "");
+ PPrintText(fout, mode, indent, lexer, node->start, node->end);
+ PPrintString(fout, indent, " ");
+ }
+ else
+ PPrintText(fout, mode, indent, lexer, node->start, node->end);
+ }
+ else if(node->type == CDATATag && EscapeCdata)
+ PPrintText(fout, mode, indent, lexer, node->start, node->end);
+ else if (node->type == CommentTag)
+ PPrintComment(fout, indent, lexer, node);
+ else if (node->type == RootNode)
+ {
+ for (content = node->content;
+ content != null;
+ content = content->next)
+ PrintSgml(fout, mode, indent, lexer, content);
+ }
+ else if (node->type == DocTypeTag)
+ PPrintDocType(fout, indent, lexer, node);
+ else if (node->type == CDATATag)
+ PPrintCDATA(fout, indent, lexer, node);
+ else if (node->type == SectionTag)
+ PPrintSection(fout, indent, lexer, node);
+ else if (node->type == AspTag ||
+ node->type == JsteTag ||
+ node->type == PhpTag )
+ PrintSgmlDefault(fout);
+ else if (node->type == ProcInsTag)
+ PPrintPI(fout, indent, lexer, node);
+ else if (node->type == XmlDecl)// && DbXml May be this is needed
+ PPrintXmlDecl(fout, indent, lexer, node);
+ else if (node->tag->model & CM_EMPTY ||
+ (node->type == StartEndTag && !xHTML))
+ {
+ if (!(node->tag->model & CM_INLINE))
+ PCondFlushLine(fout, indent);
+
+ if (MakeClean && node->tag == tag_wbr)
+ PPrintString(fout, indent, " ");
+ else
+ PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagStart);
+ }
+ else {
+ if (node->type == StartEndTag)
+ node->type = StartTag;
+
+ if (node->tag && node->tag->parser == ParsePre)
+ {
+ PCondFlushLine(fout, indent);
+
+ indent = 0;
+ PCondFlushLine(fout, indent);
+
+ PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagStart);
+ PFlushLine(fout, indent);
+
+ for (content = node->content;
+ content != null;
+ content = content->next)
+ PrintSgml(fout, (mode | PREFORMATTED | NOWRAP),
+ indent, lexer, content);
+
+ PCondFlushLine(fout, indent);
+ PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagEnd);
+ PFlushLine(fout, indent);
+
+ if (IndentContent == no && node->next != null)
+ PFlushLine(fout, indent);
+ }
+ else if (node->tag->model & CM_INLINE)
+ { PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagStart);
+
+ if (ShouldIndent(node))
+ {
+ PCondFlushLine(fout, indent);
+ indent += spaces;
+
+ for (content = node->content;
+ content != null;
+ content = content->next)
+ PrintSgml(fout, mode, indent, lexer, content);
+
+ PCondFlushLine(fout, indent);
+ indent -= spaces;
+ PCondFlushLine(fout, indent);
+ }
+ else
+ {
+
+ for (content = node->content;
+ content != null;
+ content = content->next)
+ PrintSgml(fout, mode, indent, lexer, content);
+ }
+
+ PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagEnd);
+ }
+ else
+ { PCondFlushLine(fout, indent);
+ if (SmartIndent && node->prev != null)
+ PFlushLine(fout, indent);
+
+ PrintSgmlTag(fout, mode ,indent, lexer, node, SgmlTagStart);
+ if (ShouldIndent(node))
+ PCondFlushLine(fout, indent);
+ else if (node->tag->model & CM_HTML ||
+ node->tag == tag_noframes ||
+ (node->tag->model & CM_HEAD && !(node->tag == tag_title)))
+ PFlushLine(fout, indent);
+
+ if (ShouldIndent(node))
+ { PCondFlushLine(fout, indent);
+ indent += spaces;
+
+ for (content = node->content;
+ content != null;
+ content = content->next)
+ PrintSgml(fout, mode, indent, lexer, content);
+ PCondFlushLine(fout, indent);
+ indent -= spaces;
+ PCondFlushLine(fout, indent);
+ }
+ else
+ { Node *last;
+ last = null;
+ for (content = node->content;
+ content != null;
+ content = content->next) {
+ /* kludge for naked text before block level tag */
+ if (last && !IndentContent && last->type == TextNode &&
+ content->tag && !(content->tag->model & CM_INLINE) )
+ {
+ /* PFlushLine(fout, indent); */
+ PFlushLine(fout, indent);
+ }
+
+ PrintSgml(fout, mode,
+ (ShouldIndent(node) ? indent+spaces : indent),
+ lexer, content);
+ last = content;
+ }
+ }
+ PrintSgmlTag(fout, mode, indent, lexer, node, SgmlTagEnd);
+ PFlushLine(fout, indent);
+ if (IndentContent == no &&
+ node->next != null &&
+ HideEndTags == no &&
+ (node->tag->model & (CM_BLOCK|CM_LIST|CM_DEFLIST|CM_TABLE)))
+ PFlushLine(fout, indent);
+ }
}
}
--- /cise/tmp/ppadala/tidy/src/tidy.c Sat Jun 1 02:50:03 2002
+++ src/tidy.c Mon Jul 1 19:09:05 2002
@@ -1853,6 +1853,10 @@
IndentContent = yes;
SmartIndent = yes;
}
+ else if (wstrcasecmp(arg, "dbsgml") == 0)
+ DbSgml = yes;
+ else if(wstrcasecmp(arg, "dbxml") == 0)
+ DbXml = yes;
else if (wstrcasecmp(arg, "omit") == 0)
HideEndTags = yes;
else if (wstrcasecmp(arg, "upper") == 0)
@@ -2180,6 +2184,22 @@
else
{
lexer->warnings = 0;
+
+ if (DbSgml) {
+ char *str = "article PUBLIC \"-//OASIS//DTD DocBook V3.1//EN\"";
+
+ EncloseBodyText = yes; /* We want those s */
+ doctype_mode = doctype_user;
+ doctype_str = MemAlloc(wstrlen(str));
+ wstrcpy(doctype_str, str);
+ }
+ else if(DbXml) {
+ char *str = "article PUBLIC \"-//OASIS//DTD DocBk XML V3.1.4 //EN\"";
+ EncloseBodyText = yes; /* We want those
s */
+ doctype_mode = doctype_user;
+ doctype_str = MemAlloc(wstrlen(str));
+ wstrcpy(doctype_str, str);
+ }
document = ParseDocument(lexer);
@@ -2226,6 +2246,10 @@
{
if (xHTML)
SetXHTMLDocType(lexer, document);
+ else if(DbSgml)
+ SetSgmlDocType(lexer, document);
+ else if(DbXml)
+ SetSgmlDocType(lexer, document);
else
FixDocType(lexer, document);
@@ -2247,7 +2271,7 @@
}
/* ensure presence of initial */
- if (XmlOut && XmlPi)
+ if ((XmlOut && XmlPi) || DbXml)
FixXmlDecl(lexer, document);
/*
@@ -2381,9 +2405,12 @@
/* Feature request #434940 - fix by Dave Raggett/Ignacio Vazquez-Abrams 21 Jun 01 */
else if (BodyOnly)
PrintBody(&out, lexer, document);
- else
- PPrintTree(&out, null, 0, lexer, document);
-
+ else {
+ if(DbSgml || DbXml)
+ PrintSgml(&out, null, 0, lexer, document);
+ else
+ PPrintTree(&out, null, 0, lexer, document);
+ }
PFlushLine(&out, 0);
}