--- a/Orb/Doxygen/src/xmlditadocvisitor.cpp Thu Jan 21 17:29:01 2010 +0000
+++ b/Orb/Doxygen/src/xmlditadocvisitor.cpp Thu Mar 18 18:26:18 2010 +0000
@@ -1,5 +1,7 @@
+#include "xmldita.h"
#include "xmlditadocvisitor.h"
+#include "xmlditatrace.h"
#include "docparser.h"
#include "language.h"
#include "doxygen.h"
@@ -11,11 +13,19 @@
#include <qfileinfo.h>
#include "parserintf.h"
+//#define DITA_DOT_HACK_REMOVE_XREFS
+#undef DITA_DOT_HACK_REMOVE_XREFS
+// If 0 there is no <simpletable> support
+// Need to lazily evaluate this so that <simpletable> is only written if
+// there is content in the table
+#define DITA_SIMPLETABLE_SUPPORT 0
XmlDitaDocVisitor::XmlDitaDocVisitor(XmlStream &s,CodeOutputInterface &ci)
: DocVisitor(DocVisitor_XML), xmlStream(s), xmlElemStack(s), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE),
m_insideParamlist(FALSE), paramMap(), paramDict(), currParam()
-{}
+{
+ paramDict.setAutoDelete(true);
+}
//--------------------------------------
@@ -24,6 +34,7 @@
void XmlDitaDocVisitor::visit(DocWord *w)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocWord*)", w)
if (m_hide) {
return;
}
@@ -37,20 +48,40 @@
void XmlDitaDocVisitor::visit(DocLinkedWord *w)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocLinkedWord*)", w)
if (m_hide) {
return;
}
- if (w->getDefinition() != 0) {
- startLink("", w->getDefinition()->qualifiedName(), "");
+ //printf("XmlDitaDocVisitor calling startLink() DocLinkedWord=`%s'\n", w->word().data());
+ Definition *d = w->getDefinition();
+ if (0) {
+ QString myName;
+ myName = d->qualifiedName();
+ //printf("XmlDitaDocVisitor calling startLink() DocLinkedWord [name]=`%s'\n", myName.data());
+ startLink("", myName, "");
} else {
+ //printf("XmlDitaDocVisitor calling startLink() DocLinkedWord [file]=`%s'\n", w->file().data());
+#if DITA_SUPRESS_NAMESPACE_LINKS
+ if (w->file().find("namespace") != 0) {
+ startLink(w->ref(), w->file(), w->anchor());
+ }
+#else
startLink(w->ref(), w->file(), w->anchor());
+#endif
}
write(w->word());
+#if DITA_SUPRESS_NAMESPACE_LINKS
+ if (w->file().find("namespace") != 0) {
+ endLink();
+ }
+#else
endLink();
+#endif
}
void XmlDitaDocVisitor::visit(DocWhiteSpace *w)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocWhiteSpace*)", w)
if (m_hide) {
return;
}
@@ -63,6 +94,7 @@
void XmlDitaDocVisitor::visit(DocSymbol *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocSymbol*)", s)
if (m_hide) {
return;
}
@@ -108,19 +140,27 @@
void XmlDitaDocVisitor::visit(DocURL *u)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocURL*)", u)
if (m_hide) {
return;
}
if (u->isEmail()) {
startXref(QString("mailto:")+QString(u->url()), u->url());
} else {
- startXref(u->url(), u->url());
+ // Need format attribute
+ AttributeMap myMap;
+ myMap["href"] = u->url();
+ myMap["format"] = "html";
+ push("xref", myMap);
+ write(u->url());
+ //startXref(u->url(), u->url());
}
endXref();
}
void XmlDitaDocVisitor::visit(DocLineBreak *lb)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocLineBreak*)", lb)
if (m_hide){
return;
}
@@ -133,6 +173,7 @@
void XmlDitaDocVisitor::visit(DocHorRuler *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHorRuler*)")
if (m_hide) {
return;
}
@@ -142,6 +183,7 @@
void XmlDitaDocVisitor::visit(DocStyleChange *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocStyleChange*)", s)
if (m_hide) {
return;
}
@@ -215,6 +257,7 @@
void XmlDitaDocVisitor::visit(DocVerbatim *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocVerbatim*)", s)
if (m_hide) {
return;
}
@@ -251,6 +294,7 @@
void XmlDitaDocVisitor::visit(DocAnchor *anc)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocAnchor*)", anc)
if (m_hide) {
return;
}
@@ -261,6 +305,7 @@
void XmlDitaDocVisitor::visit(DocInclude *inc)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocInclude*)", inc)
if (m_hide) {
return;
}
@@ -301,7 +346,7 @@
void XmlDitaDocVisitor::visit(DocIncOperator *op)
{
- DITA_DOC_VISITOR_TRACE("visit(DocIncOperator*)",op);
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocIncOperator*)", op)
if (op->isFirst())
{
if (!m_hide) {
@@ -333,6 +378,7 @@
void XmlDitaDocVisitor::visit(DocFormula *f)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocFormula*)", f)
write(f->text());
#if 0
if (m_hide) {
@@ -348,6 +394,7 @@
void XmlDitaDocVisitor::visit(DocIndexEntry *ie)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visit(DocIndexEntry*)", ie)
if (m_hide) {
return;
}
@@ -376,6 +423,7 @@
void XmlDitaDocVisitor::visitPre(DocAutoList *l)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocAutoList*)", l)
if (m_hide) {
return;
}
@@ -388,6 +436,7 @@
void XmlDitaDocVisitor::visitPost(DocAutoList *l)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocAutoList*)", l)
if (l->isEnumList()) {
visitPostDefault("ol");
} else {
@@ -397,36 +446,45 @@
void XmlDitaDocVisitor::visitPre(DocAutoListItem *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocAutoListItem*)")
visitPreDefault("li");
}
void XmlDitaDocVisitor::visitPost(DocAutoListItem *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocAutoListItem*)")
visitPostDefault("li");
}
void XmlDitaDocVisitor::visitPre(DocPara *p)
{
- if (xmlElemStack.isEmpty() || xmlElemStack.peek().getElemName() != "p") {
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocPara*)", p)
+ if (canPushPara()) {
visitPreDefault("p");
}
}
void XmlDitaDocVisitor::visitPost(DocPara *)
{
- if (!xmlElemStack.isEmpty() && xmlElemStack.peek().getElemName() == "p") {
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocPara*)")
+ if (canPopPara()) {
visitPostDefault("p");
}
}
void XmlDitaDocVisitor::visitPre(DocRoot *)
-{}
+{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocRoot*)")
+}
void XmlDitaDocVisitor::visitPost(DocRoot *)
-{}
+{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocRoot*)")
+}
void XmlDitaDocVisitor::visitPre(DocSimpleSect *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocSimpleSect*)", s)
if (m_hide) {
return;
}
@@ -445,7 +503,7 @@
case DocSimpleSect::Invar:
case DocSimpleSect::User:
case DocSimpleSect::Rcs:
- if (xmlElemStack.isEmpty() || xmlElemStack.peek().getElemName() != "p") {
+ if (canPushPara()) {
push("p");
}
break;
@@ -489,6 +547,7 @@
void XmlDitaDocVisitor::visitPost(DocSimpleSect *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocSimpleSect*)", s)
if (m_hide) {
return;
}
@@ -504,7 +563,7 @@
case DocSimpleSect::Unknown:
break;
default:
- if (!xmlElemStack.isEmpty() && xmlElemStack.peek().getElemName() == "p") {
+ if (canPopPara()) {
pop("p");
}
break;
@@ -514,10 +573,11 @@
void XmlDitaDocVisitor::visitPre(DocTitle *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocTitle*)")
if (!xmlElemStack.isEmpty() && xmlElemStack.peek().getElemName() == "concept") {
visitPreDefault("title");
} else {
- if (xmlElemStack.isEmpty() || xmlElemStack.peek().getElemName() != "p") {
+ if (canPushPara()) {
visitPreDefault("p");
}
visitPreDefault("b");
@@ -527,11 +587,12 @@
void XmlDitaDocVisitor::visitPost(DocTitle *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocTitle*)")
if (xmlElemStack.peek().getElemName() == "title") {
visitPostDefault("title");
} else {
visitPostDefault("b");
- if (!xmlElemStack.isEmpty() && xmlElemStack.peek().getElemName() == "p") {
+ if (canPopPara()) {
visitPostDefault("p");
}
}
@@ -539,26 +600,31 @@
void XmlDitaDocVisitor::visitPre(DocSimpleList *)
{
- visitPreDefault("ul");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocSimpleList*)")
+ visitPreDefault("ul");
}
void XmlDitaDocVisitor::visitPost(DocSimpleList *)
{
- visitPostDefault("ul");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocSimpleList*)")
+ visitPostDefault("ul");
}
void XmlDitaDocVisitor::visitPre(DocSimpleListItem *)
{
- visitPreDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocSimpleListItem*)")
+ visitPreDefault("li");
}
void XmlDitaDocVisitor::visitPost(DocSimpleListItem *)
{
- visitPostDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocSimpleListItem*)")
+ visitPostDefault("li");
}
void XmlDitaDocVisitor::visitPre(DocSection *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocSection*)", s)
// Currently unsupported
#if 0
if (m_hide) {
@@ -578,6 +644,7 @@
void XmlDitaDocVisitor::visitPost(DocSection *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocSection*)", s)
#if 0
// The original did not have the if(m_hide) test.
// I assume that is an error so visitPostDefault() uses it.
@@ -589,6 +656,7 @@
void XmlDitaDocVisitor::visitPre(DocHtmlList *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocHtmlList*)", s)
if (m_hide) {
return;
}
@@ -601,6 +669,7 @@
void XmlDitaDocVisitor::visitPost(DocHtmlList *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocHtmlList*)", s)
if (s->type()==DocHtmlList::Ordered) {
visitPostDefault("ol");
} else {
@@ -610,26 +679,31 @@
void XmlDitaDocVisitor::visitPre(DocHtmlListItem *)
{
- visitPreDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlListItem*)")
+ visitPreDefault("li");
}
void XmlDitaDocVisitor::visitPost(DocHtmlListItem *)
{
- visitPostDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlListItem*)")
+ visitPostDefault("li");
}
void XmlDitaDocVisitor::visitPre(DocHtmlDescList *)
{
- visitPreDefault("dl");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlDescList*)")
+ visitPreDefault("dl");
}
void XmlDitaDocVisitor::visitPost(DocHtmlDescList *)
{
- visitPostDefault("dl");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlDescList*)")
+ visitPostDefault("dl");
}
void XmlDitaDocVisitor::visitPre(DocHtmlDescTitle *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlDescTitle*)")
if (m_hide) {
return;
}
@@ -641,6 +715,7 @@
void XmlDitaDocVisitor::visitPost(DocHtmlDescTitle *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlDescTitle*)")
if (m_hide) {
return;
}
@@ -652,23 +727,28 @@
void XmlDitaDocVisitor::visitPre(DocHtmlDescData *)
{
- push("dd");
- //visitPreDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlDescData*)")
+ push("dd");
+ //visitPreDefault("li");
}
void XmlDitaDocVisitor::visitPost(DocHtmlDescData *)
{
- pop("dd");
- pop("dlentry");
- //visitPostDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlDescData*)")
+ pop("dd");
+ pop("dlentry");
+ //visitPostDefault("li");
}
void XmlDitaDocVisitor::visitPre(DocHtmlTable *t)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocHtmlTable*)", t)
if (m_hide) {
return;
}
+#if DITA_SIMPLETABLE_SUPPORT
push("simpletable");
+#endif
#if 0
AttributeMap attrs;
QString vR, vC;
@@ -682,11 +762,15 @@
void XmlDitaDocVisitor::visitPost(DocHtmlTable *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlTable*)")
+#if DITA_SIMPLETABLE_SUPPORT
visitPostDefault("simpletable");
+#endif
}
void XmlDitaDocVisitor::visitPre(DocHtmlRow *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlRow*)")
// FIXME look ahead to first cell
// if isHeading is true do
// visitPreDefault("sthead");
@@ -696,11 +780,13 @@
void XmlDitaDocVisitor::visitPost(DocHtmlRow *)
{
- visitPostDefault("strow");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlRow*)")
+ visitPostDefault("strow");
}
void XmlDitaDocVisitor::visitPre(DocHtmlCell *c)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocHtmlCell*)", c)
visitPreDefault("stentry");
#if 0
if (m_hide) {
@@ -716,41 +802,49 @@
void XmlDitaDocVisitor::visitPost(DocHtmlCell *c)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocHtmlCell*)", c)
visitPostDefault("stentry");
}
void XmlDitaDocVisitor::visitPre(DocHtmlCaption *)
{
- // Caption is unsupported
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocHtmlCaption*)")
+ // Caption is unsupported
}
void XmlDitaDocVisitor::visitPost(DocHtmlCaption *)
{
- // Caption is unsupported
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlCaption*)")
+ // Caption is unsupported
}
void XmlDitaDocVisitor::visitPre(DocInternal *)
{
- //visitPreDefault("internal");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocInternal*)")
+ //visitPreDefault("internal");
}
void XmlDitaDocVisitor::visitPost(DocInternal *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocInternal*)")
//visitPostDefault("internal");
}
void XmlDitaDocVisitor::visitPre(DocHRef *href)
{
- push("xref", "href", href->url());
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocHRef*)", href)
+ push("xref", "href", href->url());
}
void XmlDitaDocVisitor::visitPost(DocHRef *)
{
- visitPostDefault("xref");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHRef*)")
+ visitPostDefault("xref");
}
void XmlDitaDocVisitor::visitPre(DocHtmlHeader *header)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocHtmlHeader*)", header)
visitPreDefault("b");
#if 0
QString hdgLevel;
@@ -761,11 +855,13 @@
void XmlDitaDocVisitor::visitPost(DocHtmlHeader *)
{
- visitPostDefault("b");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocHtmlHeader*)")
+ visitPostDefault("b");
}
void XmlDitaDocVisitor::visitPre(DocImage *img)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocImage*)", img)
// Currently unsupported
#if 0
AttributeMap imgAttrs;
@@ -825,11 +921,13 @@
void XmlDitaDocVisitor::visitPost(DocImage *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocImage*)")
//visitPostDefault("image");
}
void XmlDitaDocVisitor::visitPre(DocDotFile *df)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocDotFile*)", df)
// Currently unsupported
#if 0
if (m_hide) {
@@ -841,23 +939,31 @@
void XmlDitaDocVisitor::visitPost(DocDotFile *)
{
-// visitPostDefault("dotfile");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocDotFile*)")
+ //visitPostDefault("dotfile");
}
void XmlDitaDocVisitor::visitPre(DocLink *lnk)
{
+ // The result of a \link...\endlink command
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocLink*)", lnk)
if (m_hide) {
return;
}
- if (lnk->getDefinition() != 0) {
+ if (0) {//lnk->getDefinition() != 0) {
+ //printf("XmlDitaDocVisitor calling startLink() DocLink [name]=`%s'\n", lnk->getDefinition()->qualifiedName().data());
startLink("", lnk->getDefinition()->qualifiedName(), "");
} else {
- startLink(lnk->ref(),lnk->file(),lnk->anchor());
+ //printf("XmlDitaDocVisitor calling startLink() DocLink [file]=`%s'\n", lnk->file().data());
+ //startLink(lnk->ref(),lnk->file(),lnk->anchor());
+ startLink(lnk->ref(), lnk->file(), lnk->anchor());
}
}
void XmlDitaDocVisitor::visitPost(DocLink *)
{
+ // The result of a \link...\endlink command
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocLink*)")
if (m_hide) {
return;
}
@@ -866,13 +972,16 @@
void XmlDitaDocVisitor::visitPre(DocRef *ref)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocRef*)", ref)
if (m_hide) {
return;
}
if (!ref->file().isEmpty()) {
if (ref->getDefinition() != 0) {
+ //printf("XmlDitaDocVisitor calling startLink() DocRef [name]=`%s'\n", ref->getDefinition()->qualifiedName().data());
startLink("", ref->getDefinition()->qualifiedName(), "");
} else {
+ //printf("XmlDitaDocVisitor calling startLink() DocRef [file]=`%s'\n", ref->file().data());
startLink(ref->ref(), ref->file(), ref->anchor());
}
}
@@ -883,6 +992,7 @@
void XmlDitaDocVisitor::visitPost(DocRef *ref)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPost(DocRef*)", ref)
if (m_hide) {
return;
}
@@ -894,6 +1004,7 @@
void XmlDitaDocVisitor::visitPre(DocSecRefItem *ref)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocSecRefItem*)", ref)
if (m_hide) {
return;
}
@@ -902,21 +1013,25 @@
void XmlDitaDocVisitor::visitPost(DocSecRefItem *)
{
- visitPostDefault("li");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocSecRefItem*)")
+ visitPostDefault("li");
}
void XmlDitaDocVisitor::visitPre(DocSecRefList *)
{
- visitPreDefault("ul");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocSecRefList*)")
+ visitPreDefault("ul");
}
void XmlDitaDocVisitor::visitPost(DocSecRefList *)
{
- visitPostDefault("ul");
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocSecRefList*)")
+ visitPostDefault("ul");
}
void XmlDitaDocVisitor::visitPre(DocParamSect *s)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocParamSect*)", s)
m_insideParamlist = TRUE;
if (m_hide) {
return;
@@ -941,12 +1056,14 @@
void XmlDitaDocVisitor::visitPost(DocParamSect *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocParamSect*)")
visitPostDefault("paraml");
m_insideParamlist = FALSE;
}
void XmlDitaDocVisitor::visitPre(DocParamList *pl)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocParamList*)", pl)
if (m_hide) {
return;
}
@@ -1000,6 +1117,7 @@
void XmlDitaDocVisitor::visitPost(DocParamList *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocParamList*)")
if (m_hide) {
return;
}
@@ -1009,6 +1127,7 @@
void XmlDitaDocVisitor::visitPre(DocXRefItem *x)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocXRefItem*)", x)
if (m_hide) {
return;
}
@@ -1016,9 +1135,14 @@
// with "deprecated" as the filename
if (x->file() == "deprecated"){
// Fall through to start new paragraph for deprecated description
- }else
- {
- push("xref", "id", x->file()+"_1"+x->anchor());
+ } else {
+ QString hrefStr = x->file();
+ hrefStr.append(Config_getString("XML_DITA_EXTENSION"));
+ hrefStr.append("#");
+ hrefStr.append(x->file());
+ hrefStr.append("_1");
+ hrefStr.append(x->anchor());
+ push("xref", "href", hrefStr);
write(x->title());
}
#if 0
@@ -1030,6 +1154,7 @@
void XmlDitaDocVisitor::visitPost(DocXRefItem *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocXRefItem*)")
if (m_hide) {
return;
}
@@ -1047,14 +1172,17 @@
void XmlDitaDocVisitor::visitPre(DocInternalRef *ref)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocInternalRef*)", ref)
if (m_hide) {
return;
}
+ //printf("XmlDitaDocVisitor calling startLink() DocInternalRef [file]=`%s'\n", ref->file().data());
startLink(0, ref->file(), ref->anchor());
}
void XmlDitaDocVisitor::visitPost(DocInternalRef *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocXRefItem*)")
if (m_hide) {
return;
}
@@ -1064,6 +1192,7 @@
void XmlDitaDocVisitor::visitPre(DocCopy *c)
{
+ DITA_DOC_VISITOR_TRACE("XmlDitaDocVisitor::visitPre(DocCopy*)", c)
// Currently unsupported
#if 0
if (m_hide) {
@@ -1075,35 +1204,52 @@
void XmlDitaDocVisitor::visitPost(DocCopy *)
{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocCopy*)")
// visitPostDefault("copydoc");
}
void XmlDitaDocVisitor::visitPre(DocText *)
-{}
+{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPre(DocText*)")
+}
void XmlDitaDocVisitor::visitPost(DocText *)
-{}
+{
+ DITA_DOC_VISITOR_TRACE_NOARG("XmlDitaDocVisitor::visitPost(DocText*)")
+}
void XmlDitaDocVisitor::startXref(const QString &href,const QString &text)
{
+#ifndef DITA_DOT_HACK_REMOVE_XREFS
push("xref", "href", href);
+#endif
write(text);
}
void XmlDitaDocVisitor::endXref()
{
+#ifndef DITA_DOT_HACK_REMOVE_XREFS
pop("xref");
+#endif
}
void XmlDitaDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{
AttributeMap refAttrs;
+ /*
+ printf("XmlDitaDocVisitor::startLink(): ref: \"%s\", file: \"%s\", anchor: \"%s\"\n",
+ ref.data(),
+ file.data(),
+ anchor.data());
+ */
if (!anchor.isEmpty()) {
- refAttrs["href"] = file+"_1"+anchor;
+ refAttrs["href"] = file+".xml#"+file+"_1"+anchor;
} else {
- refAttrs["href"] = file;
+ refAttrs["href"] = file+".xml#"+file;
}
+#ifndef DITA_DOT_HACK_REMOVE_XREFS
push("xref", refAttrs);
+#endif
#if 0
AttributeMap refAttrs;
if (!anchor.isEmpty()) {
@@ -1122,7 +1268,9 @@
void XmlDitaDocVisitor::endLink()
{
+#ifndef DITA_DOT_HACK_REMOVE_XREFS
visitPostDefault("xref");
+#endif
}
void XmlDitaDocVisitor::pushEnabled()
@@ -1219,6 +1367,26 @@
}
}
+/// Returns true if it is OK to write a para element
+bool XmlDitaDocVisitor::canPushPara() const
+{
+ if (!xmlElemStack.isEmpty()) {
+ QString e = xmlElemStack.peek().getElemName();
+ if (e == "xref" || e == "p") {
+ return false;
+ }
+ }
+ return true;
+}
+
+bool XmlDitaDocVisitor::canPopPara() const
+{
+ if (!xmlElemStack.isEmpty() && xmlElemStack.peek().getElemName() == "p") {
+ return true;
+ }
+ return false;
+}
+
/** Default treatment of a post traversal visit, this just
pushes a single element with no attributes. */
void XmlDitaDocVisitor::visitPreDefault(const QString& elem)