#include "Layout.h"
#include "OutputParams.h"
#include "Paragraph.h"
-#include "paragraph_funcs.h"
#include "ParagraphList.h"
#include "ParagraphParameters.h"
#include "sgml.h"
+#include "Text.h"
#include "TextClass.h"
#include "support/lassert.h"
}
+// FIXME do something here.
+docstring htmlize(docstring const & str) {
+ return str;
+}
+
// FIXME This needs to be protected somehow.
static vector<string> taglist;
ParagraphList::const_iterator makeParagraphs(Buffer const & buf,
odocstream & os,
OutputParams const & runparams,
- ParagraphList const & paragraphs,
+ Text const & text,
ParagraphList::const_iterator const & pbegin,
ParagraphList::const_iterator const & pend)
{
+ ParagraphList::const_iterator const begin = text.paragraphs().begin();
ParagraphList::const_iterator par = pbegin;
for (; par != pend; ++par) {
Layout const & lay = par->layout();
if (!lay.counter.empty())
buf.params().documentClass().counters().step(lay.counter);
+ // FIXME We should see if there's a label to be output and
+ // do something with it.
if (par != pbegin)
os << '\n';
bool const opened = openTag(os, lay);
- par->simpleLyXHTMLOnePar(buf, os, runparams,
- outerFont(distance(paragraphs.begin(), par), paragraphs));
+ docstring const deferred = par->simpleLyXHTMLOnePar(buf, os, runparams,
+ text.outerFont(distance(begin, par)));
if (opened) {
closeTag(os, lay);
os << '\n';
}
+ if (!deferred.empty())
+ os << deferred << '\n';
}
return pend;
}
+ParagraphList::const_iterator makeBibliography(Buffer const & buf,
+ odocstream & os,
+ OutputParams const & runparams,
+ Text const & text,
+ ParagraphList::const_iterator const & pbegin,
+ ParagraphList::const_iterator const & pend)
+{
+ os << "<h2 class='bibliography'>"
+ << pbegin->layout().labelstring(false)
+ << "</h2>\n"
+ << "<div class='bibliography'>\n";
+ makeParagraphs(buf, os, runparams, text, pbegin, pend);
+ os << "</div>";
+ return pend;
+}
+
+
ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
odocstream & os,
OutputParams const & runparams,
- ParagraphList const & paragraphs,
+ Text const & text,
ParagraphList::const_iterator const & pbegin,
- ParagraphList::const_iterator const & pend) {
-
+ ParagraphList::const_iterator const & pend)
+{
+ ParagraphList::const_iterator const begin = text.paragraphs().begin();
ParagraphList::const_iterator par = pbegin;
Layout const & bstyle = par->layout();
depth_type const origdepth = pbegin->params().depth();
// One is that we are still in the environment in which we
// started---which we will be if the depth is the same.
if (par->params().depth() == origdepth) {
+ Layout const & cstyle = par->layout();
if (lastlay != 0) {
closeItemTag(os, *lastlay);
lastlay = 0;
}
- Layout const & cstyle = par->layout();
+ bool const labelfirst = cstyle.htmllabelfirst();
+ bool item_tag_opened = false;
+ if (!labelfirst)
+ item_tag_opened = openItemTag(os, cstyle);
if (cstyle.labeltype == LABEL_MANUAL) {
bool const label_tag_opened = openLabelTag(os, cstyle);
sep = par->firstWordLyXHTML(os, runparams);
if (label_tag_opened)
closeLabelTag(os, cstyle);
os << '\n';
- } else if (style.latextype == LATEX_ENVIRONMENT
+ }
+ // FIXME Why did I put that first condition??
+ else if (style.latextype == LATEX_ENVIRONMENT
&& style.labeltype != LABEL_NO_LABEL) {
bool const label_tag_opened = openLabelTag(os, cstyle);
os << pbegin->expandLabel(style, buf.params(), false);
closeLabelTag(os, cstyle);
os << '\n';
}
-
- bool const item_tag_opened = openItemTag(os, cstyle);
+ if (labelfirst)
+ item_tag_opened = openItemTag(os, cstyle);
+ else
+ os << "<span class='item'>";
par->simpleLyXHTMLOnePar(buf, os, runparams,
- outerFont(distance(paragraphs.begin(), par), paragraphs), sep);
+ text.outerFont(distance(begin, par)), sep);
+ if (!labelfirst)
+ os << "</span>";
++par;
- // We may not want to close the tag yet, in particular,
- if (item_tag_opened
- // if we're not at the end...
- && par != pend
+ if (item_tag_opened) {
+ // We may not want to close the tag yet, in particular,
+ // if we're not at the end...
+ if (par != pend
// and are doing items...
- && style.latextype == LATEX_ITEM_ENVIRONMENT
- // and if the depth has changed...
- && par->params().depth() != origdepth) {
- // then we'll save this layout for later, and close it when
- // we get another item.
+ && style.latextype == LATEX_ITEM_ENVIRONMENT
+ // and if the depth has changed...
+ && par->params().depth() != origdepth) {
+ // then we'll save this layout for later, and close it when
+ // we get another item.
lastlay = &cstyle;
- } else {
- closeItemTag(os, cstyle); // FIXME
+ } else {
+ closeItemTag(os, cstyle);
+ }
os << '\n';
}
- }
+ }
// The other possibility is that the depth has increased, in which
// case we need to recurse.
else {
send = searchEnvironment(par, pend);
- par = makeEnvironment(buf, os, runparams, paragraphs, par, send);
+ par = makeEnvironment(buf, os, runparams, text, par, send);
}
break;
}
case LATEX_PARAGRAPH:
send = searchParagraph(par, pend);
- par = makeParagraphs(buf, os, runparams, paragraphs, par, send);
+ par = makeParagraphs(buf, os, runparams, text, par, send);
break;
- // FIXME
+ // Shouldn't happen
case LATEX_BIB_ENVIRONMENT:
+ send = par;
+ ++send;
+ par = makeParagraphs(buf, os, runparams, text, par, send);
+ break;
+ // Shouldn't happen
case LATEX_COMMAND:
+ ++par;
break;
}
}
void makeCommand(Buffer const & buf,
odocstream & os,
OutputParams const & runparams,
- ParagraphList const & paragraphs,
+ Text const & text,
ParagraphList::const_iterator const & pbegin)
{
Layout const & style = pbegin->layout();
bool const main_tag_opened = openTag(os, style);
// Label around sectioning number:
+ // FIXME Probably need to account for LABEL_MANUAL
if (style.labeltype != LABEL_NO_LABEL) {
bool const label_tag_opened = openLabelTag(os, style);
os << pbegin->expandLabel(style, buf.params(), false);
os << ' ';
}
+ ParagraphList::const_iterator const begin = text.paragraphs().begin();
pbegin->simpleLyXHTMLOnePar(buf, os, runparams,
- outerFont(distance(paragraphs.begin(), pbegin), paragraphs));
+ text.outerFont(distance(begin, pbegin)));
if (main_tag_opened)
closeTag(os, style);
os << '\n';
} // end anonymous namespace
-void xhtmlParagraphs(ParagraphList const & paragraphs,
+void xhtmlParagraphs(Text const & text,
Buffer const & buf,
odocstream & os,
OutputParams const & runparams)
{
+ ParagraphList const & paragraphs = text.paragraphs();
ParagraphList::const_iterator par = paragraphs.begin();
ParagraphList::const_iterator pend = paragraphs.end();
while (par != pend) {
- LYXERR0(par->id());
Layout const & style = par->layout();
ParagraphList::const_iterator lastpar = par;
ParagraphList::const_iterator send;
case LATEX_COMMAND: {
// The files with which we are working never have more than
// one paragraph in a command structure.
- makeCommand(buf, os, runparams, paragraphs, par);
+ makeCommand(buf, os, runparams, text, par);
++par;
break;
}
case LATEX_LIST_ENVIRONMENT:
case LATEX_ITEM_ENVIRONMENT: {
send = searchEnvironment(par, pend);
- par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+ par = makeEnvironment(buf, os, runparams, text, par, send);
+ break;
+ }
+ case LATEX_BIB_ENVIRONMENT: {
+ send = searchEnvironment(par, pend);
+ par = makeBibliography(buf, os, runparams, text, par, send);
break;
}
case LATEX_PARAGRAPH:
send = searchParagraph(par, pend);
- par = makeParagraphs(buf, os, runparams, paragraphs, par,send);
- break;
- case LATEX_BIB_ENVIRONMENT:
- // FIXME
- ++par;
+ par = makeParagraphs(buf, os, runparams, text, par, send);
break;
}
// FIXME??