From 319ad738f677a20403cc27192f1df7bb65ce8c0e Mon Sep 17 00:00:00 2001 From: Benjamin Paassen Date: Sun, 4 Jan 2015 19:40:21 +0100 Subject: corrected first draft of DemoOutput. Still some TODOs remain, but for the easy test document everything works. --- src/plugins/html/DemoOutput.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/html/DemoOutput.cpp b/src/plugins/html/DemoOutput.cpp index 6b9b3a4..463a5d2 100644 --- a/src/plugins/html/DemoOutput.cpp +++ b/src/plugins/html/DemoOutput.cpp @@ -31,7 +31,7 @@ void DemoHTMLTransformer::writeHTML(Handle doc, out << "\n"; out << "\n"; out << "\t\n"; - out << "\t\tTest HTML Output for" << doc->getName() << "\n"; + out << "\t\tTest HTML Output for " << doc->getName() << "\n"; out << "\t\n"; out << "\t\n"; @@ -76,10 +76,9 @@ void DemoHTMLTransformer::writeSection(Handle sec, // if the input node is no section, we ignore it. return; } - // get the fields. - std::vector> &fields = sec->getFields(); // check if we have a heading. - if (fields.size() > 1 && fields[1].size() > 0) { + if (sec->hasField("heading")) { + Rooted heading = sec->getField("heading")[0]; out << "\t\t"; switch (type) { case SectionType::BOOK: @@ -99,7 +98,7 @@ void DemoHTMLTransformer::writeSection(Handle sec, break; } // the second field marks the heading. So let's write it. - writeParagraph(fields[1][0], out, false); + writeParagraph(heading, out, false); // close the heading tag. switch (type) { case SectionType::BOOK: @@ -122,7 +121,8 @@ void DemoHTMLTransformer::writeSection(Handle sec, } // then write the section content recursively. - for (auto &n : fields[0]) { + NodeVector mainField = sec->getField(); + for (auto &n : mainField) { /* * Strictly speaking this is the wrong mechanism, because we would have * to make an "isa" call here because we can not rely on our knowledge @@ -149,15 +149,13 @@ void DemoHTMLTransformer::writeParagraph(Handle par, if (par->getDescriptor()->getName() != "paragraph") { throw OusiaException("Expected paragraph!"); } - // get the fields. - std::vector> &fields = par->getFields(); - // write heading if its there. // check if we have a heading. - if (fields.size() > 1 && fields[1].size() > 0) { + if (par->hasField("heading")) { + Rooted heading = par->getField("heading")[0]; // start the heading tag out << "\t\t
"; // the second field marks the heading. So let's write it. - writeParagraph(fields[1][0], out, false); + writeParagraph(heading, out, false); // close the heading tag. out << "
\n"; } @@ -167,13 +165,13 @@ void DemoHTMLTransformer::writeParagraph(Handle par, } // write content // TODO: What about emphasis? - for (auto &text : fields[0]) { + for (auto &text : par->getField()) { if (text->getDescriptor()->getName() != "text") { throw OusiaException("Expected text!"); } Handle primitive = - text->getFields()[0][0].cast(); - if (primitive == nullptr) { + text->getField()[0].cast(); + if (primitive.isNull()) { throw OusiaException("Text field is not primitive!"); } out << primitive->getContent().asString(); -- cgit v1.2.3